-rw-r--r-- | bin/kdepim/WhatsNew.txt | 12 | ||||
-rw-r--r-- | bin/kdepim/kaddressbook/germantranslation.txt | 2 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 7 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.cpp | 7 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.h | 2 | ||||
-rw-r--r-- | korganizer/koeventeditor.cpp | 4 | ||||
-rw-r--r-- | korganizer/koeventviewer.cpp | 8 | ||||
-rw-r--r-- | korganizer/koincidenceeditor.cpp | 5 | ||||
-rw-r--r-- | korganizer/koincidenceeditor.h | 3 | ||||
-rw-r--r-- | korganizer/kotodoeditor.cpp | 4 | ||||
-rw-r--r-- | libkdepim/ksyncprefsdialog.cpp | 4 |
11 files changed, 50 insertions, 8 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 03bc03b..cd37aac 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,116 +1,128 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 2.2.8 ************ | ||
4 | |||
5 | |||
6 | I forgot what I fixed... | ||
7 | |||
8 | Some minor fixes in KA/Pi and KO/Pi. | ||
9 | |||
10 | KA/Pi uses popup menu now for quick category selection in contact edit dialog. | ||
11 | |||
12 | In the Pi-syc mode of KO/Pi it is now possible to define specific resources which can be synced with the remote pi-sync server. | ||
13 | This feature must be considered as unstable - it still needs some more testing. | ||
14 | |||
3 | ********** VERSION 2.2.7 ************ | 15 | ********** VERSION 2.2.7 ************ |
4 | 16 | ||
5 | Added for Desktop Versions (Windows + Linux) the possibility to specify an email client to call if the user clicks on an emailaddress. | 17 | Added for Desktop Versions (Windows + Linux) the possibility to specify an email client to call if the user clicks on an emailaddress. |
6 | (Menu: Config->Global Settings->Extern.Applications: E-mail). | 18 | (Menu: Config->Global Settings->Extern.Applications: E-mail). |
7 | Added as default (and example) Mozilla Thunderbird settings. | 19 | Added as default (and example) Mozilla Thunderbird settings. |
8 | If the path to the binary in this Mozilla Thunderbird example is not matching your environment you can take these settings as an template and configure "User defined email client". | 20 | If the path to the binary in this Mozilla Thunderbird example is not matching your environment you can take these settings as an template and configure "User defined email client". |
9 | 21 | ||
10 | ********** VERSION 2.2.6 ************ | 22 | ********** VERSION 2.2.6 ************ |
11 | 23 | ||
12 | KO/Pi: | 24 | KO/Pi: |
13 | Made navigation in datepicker more userfriendly when using keyboard for scrolling. | 25 | Made navigation in datepicker more userfriendly when using keyboard for scrolling. |
14 | KO/Pi Alarm applet: | 26 | KO/Pi Alarm applet: |
15 | Made font size for the two popup menus with larger font configurable: | 27 | Made font size for the two popup menus with larger font configurable: |
16 | Change size with menu: | 28 | Change size with menu: |
17 | Play Beeps->Font Size | 29 | Play Beeps->Font Size |
18 | Save settings such that it will be restored after next reboot with menu: | 30 | Save settings such that it will be restored after next reboot with menu: |
19 | Play Beeps->Config->Save. | 31 | Play Beeps->Config->Save. |
20 | KA/Pi: | 32 | KA/Pi: |
21 | Big change! Needed for the upcoming Outlook sync: | 33 | Big change! Needed for the upcoming Outlook sync: |
22 | (Outlook sync available appr. end of 2005) | 34 | (Outlook sync available appr. end of 2005) |
23 | Telephone number types are now fixed in KA/Pi | 35 | Telephone number types are now fixed in KA/Pi |
24 | (but still compatible with the vCard standard, of cource) | 36 | (but still compatible with the vCard standard, of cource) |
25 | and they are compatible with the types used by the evil empire. | 37 | and they are compatible with the types used by the evil empire. |
26 | That makes syncing with OL possible and make it possible to sync better with mobile devices. | 38 | That makes syncing with OL possible and make it possible to sync better with mobile devices. |
27 | NOTE: | 39 | NOTE: |
28 | All your telephone types will be converted automatically at loading/importing! | 40 | All your telephone types will be converted automatically at loading/importing! |
29 | Such that it may be a good idea to make a backup of the data before starting KA/Pi. | 41 | Such that it may be a good idea to make a backup of the data before starting KA/Pi. |
30 | But the editing of phone numbers and types has changed completely such that it is now much faster to edit/change types and numbers. | 42 | But the editing of phone numbers and types has changed completely such that it is now much faster to edit/change types and numbers. |
31 | HINT: | 43 | HINT: |
32 | To see whether there was some number for some contact not converted senseful, choose | 44 | To see whether there was some number for some contact not converted senseful, choose |
33 | Menu: View->Modify view | 45 | Menu: View->Modify view |
34 | and add "Other Phone" ( in German "Sonst. Telefon") to the view. | 46 | and add "Other Phone" ( in German "Sonst. Telefon") to the view. |
35 | If a type was not converted senseful to some of the 18 new, fixed types, it will get the "Other" type. | 47 | If a type was not converted senseful to some of the 18 new, fixed types, it will get the "Other" type. |
36 | 48 | ||
37 | ********** VERSION 2.2.5 ************ | 49 | ********** VERSION 2.2.5 ************ |
38 | 50 | ||
39 | Bugfixes in KO/Pi, KA/Pi and OM/Pi. | 51 | Bugfixes in KO/Pi, KA/Pi and OM/Pi. |
40 | Added possibility to disable auto saving in KO/Pi. | 52 | Added possibility to disable auto saving in KO/Pi. |
41 | How to disable it? Good question! Next question, please? | 53 | How to disable it? Good question! Next question, please? |
42 | Added info about count of events/todos/journals to calendar info. | 54 | Added info about count of events/todos/journals to calendar info. |
43 | 55 | ||
44 | 56 | ||
45 | ********** VERSION 2.2.4 ************ | 57 | ********** VERSION 2.2.4 ************ |
46 | 58 | ||
47 | KO/Pi alarm applet: Made font smaller and added a dealy before starting KO/Pi to avoid problems accessing data storage when an alarm did wake up the Z. | 59 | KO/Pi alarm applet: Made font smaller and added a dealy before starting KO/Pi to avoid problems accessing data storage when an alarm did wake up the Z. |
48 | Added 3 sec notification about a started timer. | 60 | Added 3 sec notification about a started timer. |
49 | 61 | ||
50 | KO/Pi: | 62 | KO/Pi: |
51 | Added export option for all data to File->Export menu. | 63 | Added export option for all data to File->Export menu. |
52 | Better management if a save error occours. | 64 | Better management if a save error occours. |
53 | Added 15 sec delay in automatic saving when Z wake up from suspend and the automatic save timer did expire - to avoid problems accessing data storage directly after wake up. | 65 | Added 15 sec delay in automatic saving when Z wake up from suspend and the automatic save timer did expire - to avoid problems accessing data storage directly after wake up. |
54 | Fix for displaying month names of an utf8 translated language (like Russian). I hope a Russian version of KO/Pi will be available soon. | 66 | Fix for displaying month names of an utf8 translated language (like Russian). I hope a Russian version of KO/Pi will be available soon. |
55 | 67 | ||
56 | Added duration info about multiday events. | 68 | Added duration info about multiday events. |
57 | Changed behaviour of "Set complete" in Todo viewer: Now Todo viewer closes not automatically. | 69 | Changed behaviour of "Set complete" in Todo viewer: Now Todo viewer closes not automatically. |
58 | 70 | ||
59 | KA/Pi: | 71 | KA/Pi: |
60 | Added for vCard import the option to import contact data in Latin1 format. | 72 | Added for vCard import the option to import contact data in Latin1 format. |
61 | 73 | ||
62 | ********** VERSION 2.2.3 ************ | 74 | ********** VERSION 2.2.3 ************ |
63 | 75 | ||
64 | KO/Pi: | 76 | KO/Pi: |
65 | Fixed a problem with (non empty) exception dates in the exception date edit dialog of recurring events for newly created events. | 77 | Fixed a problem with (non empty) exception dates in the exception date edit dialog of recurring events for newly created events. |
66 | 78 | ||
67 | Fixed usability problem in KA/Pi: | 79 | Fixed usability problem in KA/Pi: |
68 | Now searching works for "all phone numbers and all addresses" if "all fields" is selected as search option. | 80 | Now searching works for "all phone numbers and all addresses" if "all fields" is selected as search option. |
69 | 81 | ||
70 | Changed some behaviour in OM/Pi mail management to make it more usable. | 82 | Changed some behaviour in OM/Pi mail management to make it more usable. |
71 | 83 | ||
72 | 84 | ||
73 | ********** VERSION 2.2.2 ************ | 85 | ********** VERSION 2.2.2 ************ |
74 | 86 | ||
75 | KO/Pi: | 87 | KO/Pi: |
76 | Fixed a problem with the sort order of last modified date in list view. | 88 | Fixed a problem with the sort order of last modified date in list view. |
77 | KA/Pi: | 89 | KA/Pi: |
78 | Fixed a resource config read problem on windows. | 90 | Fixed a resource config read problem on windows. |
79 | 91 | ||
80 | 92 | ||
81 | ********** VERSION 2.2.1 ************ | 93 | ********** VERSION 2.2.1 ************ |
82 | 94 | ||
83 | KO/Pi: | 95 | KO/Pi: |
84 | Fixed a problem displaying very long allday events in agenda view in single day mode. | 96 | Fixed a problem displaying very long allday events in agenda view in single day mode. |
85 | Fixed a problem with the default settings for new todos. | 97 | Fixed a problem with the default settings for new todos. |
86 | Added an error message dialog if saving of calendar files is not possible. | 98 | Added an error message dialog if saving of calendar files is not possible. |
87 | Made it impossible to close KO/Pi if saving fails. | 99 | Made it impossible to close KO/Pi if saving fails. |
88 | Fixed a problem adding calendars on windows such that these calendars can be used on the memory stick. | 100 | Fixed a problem adding calendars on windows such that these calendars can be used on the memory stick. |
89 | Added config options for conflict detection. | 101 | Added config options for conflict detection. |
90 | 102 | ||
91 | KA/Pi: | 103 | KA/Pi: |
92 | Added a config option to turn on asking before a contact is deleted. | 104 | Added a config option to turn on asking before a contact is deleted. |
93 | Fixed a problem with the default view and view selection at startup. | 105 | Fixed a problem with the default view and view selection at startup. |
94 | Formatted name is now set on import, if formatted name is empty. | 106 | Formatted name is now set on import, if formatted name is empty. |
95 | Fixed a problem of displaying images in the contact details view: | 107 | Fixed a problem of displaying images in the contact details view: |
96 | Now the wid/hei ratio is not changed. | 108 | Now the wid/hei ratio is not changed. |
97 | I a picture is larger than 128 pixels in wid or hei it is downscaled to | 109 | I a picture is larger than 128 pixels in wid or hei it is downscaled to |
98 | max 128 pixels wid/hei. | 110 | max 128 pixels wid/hei. |
99 | 111 | ||
100 | ********** VERSION 2.2.0 ************ | 112 | ********** VERSION 2.2.0 ************ |
101 | 113 | ||
102 | New stable release! | 114 | New stable release! |
103 | Fixed some minor usability problems. | 115 | Fixed some minor usability problems. |
104 | Added writing of next alarm to a file for usage on pdaXrom. | 116 | Added writing of next alarm to a file for usage on pdaXrom. |
105 | 117 | ||
106 | 118 | ||
107 | ************************************* | 119 | ************************************* |
108 | 120 | ||
109 | You can find the complete changelog | 121 | You can find the complete changelog |
110 | from version 1.7.7 to 2.2.0 | 122 | from version 1.7.7 to 2.2.0 |
111 | in the source package or on | 123 | in the source package or on |
112 | 124 | ||
113 | http://www.pi-sync.net/html/changelog.html | 125 | http://www.pi-sync.net/html/changelog.html |
114 | 126 | ||
115 | 127 | ||
116 | 128 | ||
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt index 3448dcc..e03dafb 100644 --- a/bin/kdepim/kaddressbook/germantranslation.txt +++ b/bin/kdepim/kaddressbook/germantranslation.txt | |||
@@ -640,197 +640,199 @@ | |||
640 | { "&Margin:","&Rand:" }, | 640 | { "&Margin:","&Rand:" }, |
641 | { "Draw &borders","Zeichne Ränder" }, | 641 | { "Draw &borders","Zeichne Ränder" }, |
642 | { "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, | 642 | { "The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data.","The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, incrementing the item margin will add space between the focus rectangle and the item data." }, |
643 | { "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, | 643 | { "The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators.","The Item Spacing decides the distance (in pixels) between the items and anything else: the view borders, other items or column separators." }, |
644 | { "Sets the width of column separators","Sets the width of column separators" }, | 644 | { "Sets the width of column separators","Sets the width of column separators" }, |
645 | { "&Layout","&Layout" }, | 645 | { "&Layout","&Layout" }, |
646 | { "Show &empty fields","Zeige leere Felder" }, | 646 | { "Show &empty fields","Zeige leere Felder" }, |
647 | { "Show field &labels","Zeige Feld Label" }, | 647 | { "Show field &labels","Zeige Feld Label" }, |
648 | { "Be&havior","Ver&halten" }, | 648 | { "Be&havior","Ver&halten" }, |
649 | { "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, | 649 | { "Header, Border and Separator Color","Kopf, Rand und Trennlinien Farbe" }, |
650 | { "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, | 650 | { "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>","<qt>Sind Sie sicher, dass Sie die Ansicht <b>%1</b> löschen möchten?</qt>" }, |
651 | { "Confirm Delete","Bestätige Löschen" }, | 651 | { "Confirm Delete","Bestätige Löschen" }, |
652 | { "Edit Address Book Filter","Editiere Adressbuch Filter" }, | 652 | { "Edit Address Book Filter","Editiere Adressbuch Filter" }, |
653 | { "Category rule","Kategorie Regel" }, | 653 | { "Category rule","Kategorie Regel" }, |
654 | { "Include categories","Inklusive" }, | 654 | { "Include categories","Inklusive" }, |
655 | { "Exclude categories","Exclusive" }, | 655 | { "Exclude categories","Exclusive" }, |
656 | { "Include contacts, that are:","Schließe folgende Kontakte ein:" }, | 656 | { "Include contacts, that are:","Schließe folgende Kontakte ein:" }, |
657 | { "public","Öffentlich" }, | 657 | { "public","Öffentlich" }, |
658 | { "private","Privat" }, | 658 | { "private","Privat" }, |
659 | { "confidential","Vertraulich" }, | 659 | { "confidential","Vertraulich" }, |
660 | { "Configure Resources","Konfiguriere Resourcen" }, | 660 | { "Configure Resources","Konfiguriere Resourcen" }, |
661 | { "Resource Configuration","Resource Konfiguration" }, | 661 | { "Resource Configuration","Resource Konfiguration" }, |
662 | { "Resources","Resourcen" }, | 662 | { "Resources","Resourcen" }, |
663 | { "Standard","Standard" }, | 663 | { "Standard","Standard" }, |
664 | { "&Use as Standard","Setze als Standard" }, | 664 | { "&Use as Standard","Setze als Standard" }, |
665 | { "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, | 665 | { "Select type of the new resource:","Selektiere Typ der neuen Resource:" }, |
666 | { "General Settings","Allgemeine Einstellungen" }, | 666 | { "General Settings","Allgemeine Einstellungen" }, |
667 | { "Read-only","Nur-Lesen" }, | 667 | { "Read-only","Nur-Lesen" }, |
668 | { "Include in sync","Schließe in Sync mit ein" }, | 668 | { "Include in sync","Schließe in Sync mit ein" }, |
669 | { "%1 Resource Settings","%1 Resource Einstellungen" }, | 669 | { "%1 Resource Settings","%1 Resource Einstellungen" }, |
670 | { "Format:","Format:" }, | 670 | { "Format:","Format:" }, |
671 | { "Location:","Ort:" }, | 671 | { "Location:","Ort:" }, |
672 | { "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, | 672 | { "Full Menu bar (restart)","Volle Menu Leiste (Neustart!)" }, |
673 | { "Language","Sprache" }, | 673 | { "Language","Sprache" }, |
674 | { "Time Format","Zeit Format" }, | 674 | { "Time Format","Zeit Format" }, |
675 | { "Time Zone","Zeit Zone" }, | 675 | { "Time Zone","Zeit Zone" }, |
676 | { "Data storage path","Daten Speicherpfad" }, | 676 | { "Data storage path","Daten Speicherpfad" }, |
677 | { "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, | 677 | { "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, |
678 | { "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, | 678 | { "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, |
679 | { "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, | 679 | { "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, |
680 | { "Save settings","Speichere Einstellungen" }, | 680 | { "Save settings","Speichere Einstellungen" }, |
681 | { "Save standard","Speichere Standard" }, | 681 | { "Save standard","Speichere Standard" }, |
682 | { "Save","Speichern" }, | 682 | { "Save","Speichern" }, |
683 | { "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, | 683 | { "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, |
684 | { "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, | 684 | { "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, |
685 | { "Multiple Sync options","Multi Sync Optionen" }, | 685 | { "Multiple Sync options","Multi Sync Optionen" }, |
686 | { "Sync algo options","Sync Ablauf Optionen" }, | 686 | { "Sync algo options","Sync Ablauf Optionen" }, |
687 | { "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, | 687 | { "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, |
688 | { "Incoming calendar filter:","Eingehender Kalender Filter:" }, | 688 | { "Incoming calendar filter:","Eingehender Kalender Filter:" }, |
689 | { "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, | 689 | { "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, |
690 | { "Write back options","Optionen zum Zurückschreiben" }, | 690 | { "Write back options","Optionen zum Zurückschreiben" }, |
691 | { "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, | 691 | { "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, |
692 | { "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, | 692 | { "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, |
693 | { "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, | 693 | { "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, |
694 | { "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, | 694 | { "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, |
695 | { "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, | 695 | { "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, |
696 | { "Time period","Zeitspanne" }, | 696 | { "Time period","Zeitspanne" }, |
697 | { "From ","Von " }, | 697 | { "From ","Von " }, |
698 | { " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, | 698 | { " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, |
699 | { " weeks in the future "," Wochen in der Zukunft " }, | 699 | { " weeks in the future "," Wochen in der Zukunft " }, |
700 | { "Profile kind specific settings","Profil Art abhängige Einstellungen" }, | 700 | { "Profile kind specific settings","Profil Art abhängige Einstellungen" }, |
701 | { "Local temp file:","Lokale temp Datei:" }, | 701 | { "Local temp file:","Lokale temp Datei:" }, |
702 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, | 702 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, |
703 | { "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, | 703 | { "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, |
704 | { "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." }, | 704 | { "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." }, |
705 | { "Sorry","Tut mir leid" }, | 705 | { "Sorry","Tut mir leid" }, |
706 | { "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" }, | 706 | { "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" }, |
707 | { "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" }, | 707 | { "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" }, |
708 | { "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" }, | 708 | { "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" }, |
709 | { "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" }, | 709 | { "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" }, |
710 | { "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" }, | 710 | { "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" }, |
711 | { "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, | 711 | { "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, |
712 | { "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, | 712 | { "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, |
713 | { "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, | 713 | { "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, |
714 | { "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, | 714 | { "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, |
715 | { "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, | 715 | { "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, |
716 | { "Error","Fehler" }, | 716 | { "Error","Fehler" }, |
717 | { ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, | 717 | { ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, |
718 | { "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, | 718 | { "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, |
719 | { "Warning","Warnung" }, | 719 | { "Warning","Warnung" }, |
720 | { "Select week number","Wähle Wochen Nummer" }, | 720 | { "Select week number","Wähle Wochen Nummer" }, |
721 | { "Februar","Februar" }, | 721 | { "Februar","Februar" }, |
722 | { "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, | 722 | { "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, |
723 | { "Password for remote access:","Passwort für fernen Zugriff:" }, | 723 | { "Password for remote access:","Passwort für fernen Zugriff:" }, |
724 | { "Remote IP address:","Ferne IP Adresse:" }, | 724 | { "Remote IP address:","Ferne IP Adresse:" }, |
725 | { "Remote port number:","Ferne Port Nummer:" }, | 725 | { "Remote port number:","Ferne Port Nummer:" }, |
726 | { "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, | 726 | { "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, |
727 | { "Remote from: ","Fern von: " }, | 727 | { "Remote from: ","Fern von: " }, |
728 | { "Local from: ","Lokal von: " }, | 728 | { "Local from: ","Lokal von: " }, |
729 | { "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, | 729 | { "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, |
730 | { "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, | 730 | { "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, |
731 | { "Write back","Schreibe zurück" }, | 731 | { "Write back","Schreibe zurück" }, |
732 | { "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, | 732 | { "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, |
733 | { "Received sync request","Sync Anfrage erhalten" }, | 733 | { "Received sync request","Sync Anfrage erhalten" }, |
734 | { "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, | 734 | { "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, |
735 | { "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, | 735 | { "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, |
736 | { "Data saved to temp file!","Daten in temp Datei gespeichert!" }, | 736 | { "Data saved to temp file!","Daten in temp Datei gespeichert!" }, |
737 | { "Sending file...","Sende Datei..." }, | 737 | { "Sending file...","Sende Datei..." }, |
738 | { "Waiting for synced file...","Warte auf gesyncte Daten..." }, | 738 | { "Waiting for synced file...","Warte auf gesyncte Daten..." }, |
739 | { "Receiving synced file...","Gesyncte Daten erhalten..." }, | 739 | { "Receiving synced file...","Gesyncte Daten erhalten..." }, |
740 | { "Received %1 bytes","%1 Bytes erhalten" }, | 740 | { "Received %1 bytes","%1 Bytes erhalten" }, |
741 | { "Writing file to disk...","Speichere Datei..." }, | 741 | { "Writing file to disk...","Speichere Datei..." }, |
742 | { "Pi-Sync successful!","Pi-Sync erfolgreich!" }, | 742 | { "Pi-Sync successful!","Pi-Sync erfolgreich!" }, |
743 | { "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, | 743 | { "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, |
744 | { "Synchronize!","Synchronisiere!" }, | 744 | { "Synchronize!","Synchronisiere!" }, |
745 | { "High clock skew!","Großer Uhrzeitunterschied!" }, | 745 | { "High clock skew!","Großer Uhrzeitunterschied!" }, |
746 | { "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, | 746 | { "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, |
747 | { "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, | 747 | { "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, |
748 | { "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" }, | 748 | { "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" }, |
749 | { "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" }, | 749 | { "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" }, |
750 | { "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" }, | 750 | { "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" }, |
751 | { "Edit new contact","Bearbeite neuen Kontakt" }, | 751 | { "Edit new contact","Bearbeite neuen Kontakt" }, |
752 | { "Edit ","Bearbeite " }, | 752 | { "Edit ","Bearbeite " }, |
753 | { "No contact changed!","Kein Kontakt verändert" }, | 753 | { "No contact changed!","Kein Kontakt verändert" }, |
754 | { "%1 contacts changed!","%1 Kontakte geändert!" }, | 754 | { "%1 contacts changed!","%1 Kontakte geändert!" }, |
755 | { "Mobile (home)","Handy (Privat)" }, | 755 | { "Mobile (home)","Handy (Privat)" }, |
756 | { "Mobile (work)","Handy (Arbeit)" }, | 756 | { "Mobile (work)","Handy (Arbeit)" }, |
757 | { "Def.Formatted Name","Def. Format. Name" }, | 757 | { "Def.Formatted Name","Def. Format. Name" }, |
758 | { "Colors","Farben" }, | 758 | { "Colors","Farben" }, |
759 | { "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, | 759 | { "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, |
760 | { "Backup enabled","Backup angeschaltet" }, | 760 | { "Backup enabled","Backup angeschaltet" }, |
761 | { "Use standard backup dir","Standard Backupverzeichnis" }, | 761 | { "Use standard backup dir","Standard Backupverzeichnis" }, |
762 | { "Number of Backups:","Anzahl der Backups" }, | 762 | { "Number of Backups:","Anzahl der Backups" }, |
763 | { "Make backup every ","Mache ein Backup alle " }, | 763 | { "Make backup every ","Mache ein Backup alle " }, |
764 | { " days"," Tage" }, | 764 | { " days"," Tage" }, |
765 | { "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, | 765 | { "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, |
766 | { "Backup Failed!","Backup Problem!" }, | 766 | { "Backup Failed!","Backup Problem!" }, |
767 | { "Try again now","Versuche jetzt nochmal" }, | 767 | { "Try again now","Versuche jetzt nochmal" }, |
768 | { "Try again later","Versuche später nochmal" }, | 768 | { "Try again later","Versuche später nochmal" }, |
769 | { "Try again tomorrow","Versuche morgen nochmal" }, | 769 | { "Try again tomorrow","Versuche morgen nochmal" }, |
770 | { "Disable backup","Schalte Backup ab" }, | 770 | { "Disable backup","Schalte Backup ab" }, |
771 | { "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, | 771 | { "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, |
772 | { "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, | 772 | { "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, |
773 | { "Choose action","Wähle Aktion" }, | 773 | { "Choose action","Wähle Aktion" }, |
774 | { "&Configure KA/Pi...","Konfiguriere KA/Pi..." }, | 774 | { "&Configure KA/Pi...","Konfiguriere KA/Pi..." }, |
775 | { "Global Settings...","Globale Einstellungen..." }, | 775 | { "Global Settings...","Globale Einstellungen..." }, |
776 | { "Spouse","Ehegatte" }, | 776 | { "Spouse","Ehegatte" }, |
777 | { "Notes","Notizen" }, | 777 | { "Notes","Notizen" }, |
778 | { "Messanger","Messanger" }, | 778 | { "Messanger","Messanger" }, |
779 | { "Assistant","Assistent" }, | 779 | { "Assistant","Assistent" }, |
780 | { "Manager","Manager" }, | 780 | { "Manager","Manager" }, |
781 | { "Secrecy","Sichtbar" }, | 781 | { "Secrecy","Sichtbar" }, |
782 | { "male","männlich" }, | 782 | { "male","männlich" }, |
783 | { "female","weiblich" }, | 783 | { "female","weiblich" }, |
784 | { "Hide!","Verbergen!" }, | 784 | { "Hide!","Verbergen!" }, |
785 | { "Show!","Anzeigen!" }, | 785 | { "Show!","Anzeigen!" }, |
786 | { "Details","Details" }, | 786 | { "Details","Details" }, |
787 | { "Search:","Suche:" }, | 787 | { "Search:","Suche:" }, |
788 | { "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, | 788 | { "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, |
789 | { "Pi-Sync Port Error","Pi-Sync Port Fehler" }, | 789 | { "Pi-Sync Port Error","Pi-Sync Port Fehler" }, |
790 | { "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, | 790 | { "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, |
791 | { "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, | 791 | { "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, |
792 | { "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, | 792 | { "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, |
793 | { "Pi-Sync Error","Pi-Sync Fehler" }, | 793 | { "Pi-Sync Error","Pi-Sync Fehler" }, |
794 | { "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, | 794 | { "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, |
795 | { "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, | 795 | { "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, |
796 | { "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, | 796 | { "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, |
797 | { "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, | 797 | { "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, |
798 | { "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, | 798 | { "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, |
799 | { "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, | 799 | { "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, |
800 | { "Receiving file from remote...","Empfange entfernte Datei..." }, | 800 | { "Receiving file from remote...","Empfange entfernte Datei..." }, |
801 | { "Sending back synced file...","Sende synchronisierte Datei zurück..." }, | 801 | { "Sending back synced file...","Sende synchronisierte Datei zurück..." }, |
802 | { "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, | 802 | { "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, |
803 | { "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, | 803 | { "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, |
804 | { "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, | 804 | { "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, |
805 | { "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, | 805 | { "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, |
806 | { "Writing back file ...","Schreibe Datei zurück..." }, | 806 | { "Writing back file ...","Schreibe Datei zurück..." }, |
807 | { "Sending back file ...","Sende Datei zurück..." }, | 807 | { "Sending back file ...","Sende Datei zurück..." }, |
808 | { "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" }, | 808 | { "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" }, |
809 | { "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, | 809 | { "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, |
810 | { "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" }, | 810 | { "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" }, |
811 | { "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" }, | 811 | { "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" }, |
812 | { "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." }, | 812 | { "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." }, |
813 | { "Import this contact?","Importiere diesen Kontakt?" }, | 813 | { "Import this contact?","Importiere diesen Kontakt?" }, |
814 | { "Import all!","Importiere alle!" }, | 814 | { "Import all!","Importiere alle!" }, |
815 | { "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" }, | 815 | { "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" }, |
816 | { "Import Format","Import Format" }, | 816 | { "Import Format","Import Format" }, |
817 | { "Select import format!\nDefault and standard is Utf8.\nLatin1 may be the right\nfor some West Europian languages.","Wähle Import Format!\nDefault und Standard ist Utf8.\nLatin1 kann das richtige für\nWesteuropäische Sprachen sein." }, | 817 | { "Select import format!\nDefault and standard is Utf8.\nLatin1 may be the right\nfor some West Europian languages.","Wähle Import Format!\nDefault und Standard ist Utf8.\nLatin1 kann das richtige für\nWesteuropäische Sprachen sein." }, |
818 | { "Home2","Privat2" }, | 818 | { "Home2","Privat2" }, |
819 | { "Work2","Arbeit2" }, | 819 | { "Work2","Arbeit2" }, |
820 | { "Fax (Work)","Fax (Arbeit)" }, | 820 | { "Fax (Work)","Fax (Arbeit)" }, |
821 | { "Fax (Home)","Fax (Privat)" }, | 821 | { "Fax (Home)","Fax (Privat)" }, |
822 | { "Assistent","Sekretär(in)" }, | 822 | { "Assistent","Sekretär(in)" }, |
823 | { "Company","Firma" }, | 823 | { "Company","Firma" }, |
824 | { "Mobile2","Handy2" }, | 824 | { "Mobile2","Handy2" }, |
825 | { "Callback","Rückruf" }, | 825 | { "Callback","Rückruf" }, |
826 | { "Fax (Other)","Fax (Sonst.)" }, | 826 | { "Fax (Other)","Fax (Sonst.)" }, |
827 | { "Primary","Bevorzugt" }, | 827 | { "Primary","Bevorzugt" }, |
828 | { "Mobile","Handy" }, | 828 | { "Mobile","Handy" }, |
829 | { "Unfiled","Nicht zugeordnet" }, | 829 | { "Unfiled","Nicht zugeordnet" }, |
830 | { "Format.n.:","Format.N.:" }, | 830 | { "Format.n.:","Format.N.:" }, |
831 | { "Other Phone","Sonst. Telefon" }, | 831 | { "Other Phone","Sonst. Telefon" }, |
832 | { "Pi-Sync - all calendars ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync - alle Kalender ( direktes Kx/Pi mit Kx/Pi syncen )" }, | ||
833 | { "Pi-Sync - selected calendars ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync - ausgewählte Kalender ( direktes Kx/Pi mit Kx/Pi syncen )" }, | ||
832 | { "","" }, | 834 | { "","" }, |
833 | { "","" }, | 835 | { "","" }, |
834 | { "","" }, | 836 | { "","" }, |
835 | { "","" }, | 837 | { "","" }, |
836 | { "","" }, \ No newline at end of file | 838 | { "","" }, \ No newline at end of file |
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index 767e243..2dec521 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -747,385 +747,384 @@ | |||
747 | { "Sync+save","Syncen+speichern" }, | 747 | { "Sync+save","Syncen+speichern" }, |
748 | { "Default","Standard" }, | 748 | { "Default","Standard" }, |
749 | { " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, | 749 | { " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, |
750 | { " %d items?"," %d Einträge?" }, | 750 | { " %d items?"," %d Einträge?" }, |
751 | { "\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?" }, | 751 | { "\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?" }, |
752 | { " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, | 752 | { " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, |
753 | { "Current","Aktuelle" }, | 753 | { "Current","Aktuelle" }, |
754 | { "\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" }, | 754 | { "\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" }, |
755 | { "All","Alle" }, | 755 | { "All","Alle" }, |
756 | { "Data Loss Warning","Datenverlust Warnung" }, | 756 | { "Data Loss Warning","Datenverlust Warnung" }, |
757 | { "Proceed","Weitermachen" }, | 757 | { "Proceed","Weitermachen" }, |
758 | { "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, | 758 | { "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, |
759 | { "Filter disabled ","Filter abgeschaltet" }, | 759 | { "Filter disabled ","Filter abgeschaltet" }, |
760 | { "Filter selected: ","Gewählter Filter: " }, | 760 | { "Filter selected: ","Gewählter Filter: " }, |
761 | { "Toggle Cancel","Gecancelt ändern" }, | 761 | { "Toggle Cancel","Gecancelt ändern" }, |
762 | { "&Toggle Cancel","Gecancel&t ändern" }, | 762 | { "&Toggle Cancel","Gecancel&t ändern" }, |
763 | { "Configure Toolbar","Konfiguriere Toolbar" }, | 763 | { "Configure Toolbar","Konfiguriere Toolbar" }, |
764 | { "Stretched TB","Gedehnte TB" }, | 764 | { "Stretched TB","Gedehnte TB" }, |
765 | { "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, | 765 | { "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, |
766 | { "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, | 766 | { "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, |
767 | { "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" }, | 767 | { "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" }, |
768 | { "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, | 768 | { "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, |
769 | { "Imported file successfully","Datei erfolgreich importiert" }, | 769 | { "Imported file successfully","Datei erfolgreich importiert" }, |
770 | { "Error importing file","Fehler beim Importieren der Datei" }, | 770 | { "Error importing file","Fehler beim Importieren der Datei" }, |
771 | { "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, | 771 | { "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, |
772 | { "Export iCal filename(*.ics)","Export iCal Dateiname(*.ics)" }, | 772 | { "Export iCal filename(*.ics)","Export iCal Dateiname(*.ics)" }, |
773 | { "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" }, | 773 | { "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" }, |
774 | { "Overwrite!","Überschreiben!" }, | 774 | { "Overwrite!","Überschreiben!" }, |
775 | { "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" }, | 775 | { "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" }, |
776 | { "Load backup filename","Lade Backup Dateiname" }, | 776 | { "Load backup filename","Lade Backup Dateiname" }, |
777 | { "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, | 777 | { "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, |
778 | { "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, | 778 | { "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, |
779 | { "Save backup filename","Speichere Backup Dateiname" }, | 779 | { "Save backup filename","Speichere Backup Dateiname" }, |
780 | { "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" }, | 780 | { "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" }, |
781 | { "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, | 781 | { "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, |
782 | { "Details of attendee","Teilnehmerdetails" }, | 782 | { "Details of attendee","Teilnehmerdetails" }, |
783 | { "Work phone:\n","Telefon Arbeit:\n" }, | 783 | { "Work phone:\n","Telefon Arbeit:\n" }, |
784 | { "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, | 784 | { "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, |
785 | { "Home phone:\n","Telefon privat:\n" }, | 785 | { "Home phone:\n","Telefon privat:\n" }, |
786 | { "Mobile home phone:\n","Mobiltelefon privat:\n" }, | 786 | { "Mobile home phone:\n","Mobiltelefon privat:\n" }, |
787 | { "Email:\n","Email:\n" }, | 787 | { "Email:\n","Email:\n" }, |
788 | { "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, | 788 | { "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, |
789 | { "Audio Al.: ","Audio Al.: " }, | 789 | { "Audio Al.: ","Audio Al.: " }, |
790 | { "Proc.Al.: ","Proz.Al.: " }, | 790 | { "Proc.Al.: ","Proz.Al.: " }, |
791 | { "No sound set","Kein Sound definiert" }, | 791 | { "No sound set","Kein Sound definiert" }, |
792 | { "*.wav|Wav Files","*.wav|Wav Dateien" }, | 792 | { "*.wav|Wav Files","*.wav|Wav Dateien" }, |
793 | { "No program set","Kein Programm definiert" }, | 793 | { "No program set","Kein Programm definiert" }, |
794 | { "Running '%1'","Ausführen '%1'" }, | 794 | { "Running '%1'","Ausführen '%1'" }, |
795 | { "Playing '%1'","Abspielen '%1'" }, | 795 | { "Playing '%1'","Abspielen '%1'" }, |
796 | { "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, | 796 | { "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, |
797 | { "Load!","Laden!" }, | 797 | { "Load!","Laden!" }, |
798 | { "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" }, | 798 | { "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" }, |
799 | { "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, | 799 | { "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, |
800 | { "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, | 800 | { "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, |
801 | { "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, | 801 | { "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, |
802 | { "Features + hints...","Eigenschaften + Tipps..." }, | 802 | { "Features + hints...","Eigenschaften + Tipps..." }, |
803 | { "User translation...","Benutzer Übersetzung..." }, | 803 | { "User translation...","Benutzer Übersetzung..." }, |
804 | { "Sync HowTo...","Synchronisation HowTo..." }, | 804 | { "Sync HowTo...","Synchronisation HowTo..." }, |
805 | { "Print calendar...","Drucke Kalender..." }, | 805 | { "Print calendar...","Drucke Kalender..." }, |
806 | { "Anniversary","Jahrestag" }, | 806 | { "Anniversary","Jahrestag" }, |
807 | { "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" }, | 807 | { "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" }, |
808 | { "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, | 808 | { "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, |
809 | { "Next recurrence is on: ","Nächste Wiederholung ist am:" }, | 809 | { "Next recurrence is on: ","Nächste Wiederholung ist am:" }, |
810 | { "<b>Alarm on: </b>","<b>Alarm am: </b>" }, | 810 | { "<b>Alarm on: </b>","<b>Alarm am: </b>" }, |
811 | { "<b>Access: </b>","<b>Zugriff: </b>" }, | 811 | { "<b>Access: </b>","<b>Zugriff: </b>" }, |
812 | { "(%1 min before)","(%1 min vorher)" }, | 812 | { "(%1 min before)","(%1 min vorher)" }, |
813 | { "<b>Categories: </b>","<b>Kategorien: </b>" }, | 813 | { "<b>Categories: </b>","<b>Kategorien: </b>" }, |
814 | { "Save Journal/Description...","Speichere Journal/Details..." }, | 814 | { "Save Journal/Description...","Speichere Journal/Details..." }, |
815 | { "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." }, | 815 | { "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." }, |
816 | { "Continue","Weitermachen" }, | 816 | { "Continue","Weitermachen" }, |
817 | { " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, | 817 | { " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, |
818 | { "Attendee:","Teilnehmer:" }, | 818 | { "Attendee:","Teilnehmer:" }, |
819 | { "Click OK to search ->","Klicke zum Suchen auf OK ->" }, | 819 | { "Click OK to search ->","Klicke zum Suchen auf OK ->" }, |
820 | { "On day ","Am Tag " }, | 820 | { "On day ","Am Tag " }, |
821 | { "%1 of ","%1 des Monats" }, | 821 | { "%1 of ","%1 des Monats" }, |
822 | { "%1 of the year","%1 des Jahres" }, | 822 | { "%1 of the year","%1 des Jahres" }, |
823 | { "Anonymous","Anonymo" }, | 823 | { "Anonymous","Anonymo" }, |
824 | { "nobody@nowhere","niemand@nirgendwo" }, | 824 | { "nobody@nowhere","niemand@nirgendwo" }, |
825 | { "calendar.html","calendar.html" }, | 825 | { "calendar.html","calendar.html" }, |
826 | { " Local Time"," Lokale Zeit" }, | 826 | { " Local Time"," Lokale Zeit" }, |
827 | { "Unknown Name","Unbekannter Name" }, | 827 | { "Unknown Name","Unbekannter Name" }, |
828 | { "unknown@nowhere","unbekannt@nirgendwo" }, | 828 | { "unknown@nowhere","unbekannt@nirgendwo" }, |
829 | { "Beam via IR!","Beam via IR!" }, | 829 | { "Beam via IR!","Beam via IR!" }, |
830 | { "Next Month","Nächster Monat" }, | 830 | { "Next Month","Nächster Monat" }, |
831 | { "Prio","Prio" }, | 831 | { "Prio","Prio" }, |
832 | { "Reparent Todo","Mache Sub-Todo" }, | 832 | { "Reparent Todo","Mache Sub-Todo" }, |
833 | { "tomorrow","morgen" }, | 833 | { "tomorrow","morgen" }, |
834 | { "today","heute" }, | 834 | { "today","heute" }, |
835 | { "yesterday","gestern" }, | 835 | { "yesterday","gestern" }, |
836 | { "Ok","Ok" }, | 836 | { "Ok","Ok" }, |
837 | { "Ok+Agenda","Ok+Agenda" }, | 837 | { "Ok+Agenda","Ok+Agenda" }, |
838 | { "Email","Email" }, | 838 | { "Email","Email" }, |
839 | { "RSVP","RSVP" }, | 839 | { "RSVP","RSVP" }, |
840 | { "Email:","Email:" }, | 840 | { "Email:","Email:" }, |
841 | { "Appointment Time ","Termin Zeit " }, | 841 | { "Appointment Time ","Termin Zeit " }, |
842 | { "2","2" }, | 842 | { "2","2" }, |
843 | { "3","3" }, | 843 | { "3","3" }, |
844 | { "4","4" }, | 844 | { "4","4" }, |
845 | { " 0 %"," 0 %" }, | 845 | { " 0 %"," 0 %" }, |
846 | { " 20 %"," 20 %" }, | 846 | { " 20 %"," 20 %" }, |
847 | { " 40 %"," 40 %" }, | 847 | { " 40 %"," 40 %" }, |
848 | { " 60 %"," 60 %" }, | 848 | { " 60 %"," 60 %" }, |
849 | { " 80 %"," 80 %" }, | 849 | { " 80 %"," 80 %" }, |
850 | { "100 %","100 %" }, | 850 | { "100 %","100 %" }, |
851 | { "Filter","Filter" }, | 851 | { "Filter","Filter" }, |
852 | { "Configure","Konfiguriere" }, | 852 | { "Configure","Konfiguriere" }, |
853 | { "What's Next","What's Next" }, | 853 | { "What's Next","What's Next" }, |
854 | { "Complete calendar...","Kompletten Kalender..." }, | 854 | { "Complete calendar...","Kompletten Kalender..." }, |
855 | { "Filtered calendar...","Gefilterten Kalender..." }, | 855 | { "Filtered calendar...","Gefilterten Kalender..." }, |
856 | { "Export to phone","Exportiere zum Handy" }, | 856 | { "Export to phone","Exportiere zum Handy" }, |
857 | { "Beam receive enabled","Beam Empfang an" }, | 857 | { "Beam receive enabled","Beam Empfang an" }, |
858 | { "What's new?","Was ist neu?" }, | 858 | { "What's new?","Was ist neu?" }, |
859 | { "FAQ...","FAQ..." }, | 859 | { "FAQ...","FAQ..." }, |
860 | { "Licence...","Licence..." }, | 860 | { "Licence...","Licence..." }, |
861 | { "What's This?","What's This?" }, | 861 | { "What's This?","What's This?" }, |
862 | { "&Edit...","Bearbeite..." }, | 862 | { "&Edit...","Bearbeite..." }, |
863 | { "Oktober","Oktober" }, | 863 | { "Oktober","Oktober" }, |
864 | { "Title","Titel" }, | 864 | { "Title","Titel" }, |
865 | { "%1 %","%1 %" }, | 865 | { "%1 %","%1 %" }, |
866 | { "Enable Pi-Sync","Schalte Pi-Sync an" }, | 866 | { "Enable Pi-Sync","Schalte Pi-Sync an" }, |
867 | { "Import!","Importiere!" }, | 867 | { "Import!","Importiere!" }, |
868 | { "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, | 868 | { "inserting birthdays - close to abort!","Burzeltage werden eingefügt - schließe um abzubrechen!" }, |
869 | { "Export to phone options","Export ans Handy Optionen" }, | 869 | { "Export to phone options","Export ans Handy Optionen" }, |
870 | { "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, | 870 | { "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, |
871 | { "I/O device: ","I/O device: " }, | 871 | { "I/O device: ","I/O device: " }, |
872 | { "Connection: ","Connection: " }, | 872 | { "Connection: ","Connection: " }, |
873 | { "Model(opt.): ","Model(opt.): " }, | 873 | { "Model(opt.): ","Model(opt.): " }, |
874 | { "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, | 874 | { "Write back events in future only","Schreibe nur zukünftige Termine zurück" }, |
875 | { "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, | 875 | { "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, |
876 | { "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" }, | 876 | { "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das löscht alle alten\nTodo/Kalender Daten auf dem Handy!" }, |
877 | { "Export to mobile phone!","Exportiere auf das Handy!" }, | 877 | { "Export to mobile phone!","Exportiere auf das Handy!" }, |
878 | { "Export complete calendar","Exportiere kompletten Kalender" }, | 878 | { "Export complete calendar","Exportiere kompletten Kalender" }, |
879 | { "Writing to phone...","Sende Daten ans Handy..." }, | 879 | { "Writing to phone...","Sende Daten ans Handy..." }, |
880 | { " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, | 880 | { " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, |
881 | { "Retry","Nochmal versuchen" }, | 881 | { "Retry","Nochmal versuchen" }, |
882 | { "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, | 882 | { "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, |
883 | { "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, | 883 | { "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Gerät!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, |
884 | { "Error exporting to phone!","Fehler beim Export auf das Handy!" }, | 884 | { "Error exporting to phone!","Fehler beim Export auf das Handy!" }, |
885 | { "Export filtered calendar","Exportiere gefilterten Kalender" }, | 885 | { "Export filtered calendar","Exportiere gefilterten Kalender" }, |
886 | { "Preferences","Vorlieben" }, | 886 | { "Preferences","Vorlieben" }, |
887 | { "Global","Global" }, | 887 | { "Global","Global" }, |
888 | { "Phone","Phone" }, | 888 | { "Phone","Phone" }, |
889 | { "SMS","SMS" }, | 889 | { "SMS","SMS" }, |
890 | { "Fax","Fax" }, | 890 | { "Fax","Fax" }, |
891 | { "Pager","Pager" }, | 891 | { "Pager","Pager" }, |
892 | { "SIP","SIP" }, | 892 | { "SIP","SIP" }, |
893 | { "Italian","Italienisch" }, | 893 | { "Italian","Italienisch" }, |
894 | { "24:00","24:00" }, | 894 | { "24:00","24:00" }, |
895 | { "12:00am","12:00am" }, | 895 | { "12:00am","12:00am" }, |
896 | { "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, | 896 | { "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, |
897 | { "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, | 897 | { "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, |
898 | { "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, | 898 | { "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, |
899 | { "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, | 899 | { "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, |
900 | { "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, | 900 | { "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, |
901 | { "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, | 901 | { "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, |
902 | { "Used Mail Client","Benutzter Mail Client" }, | 902 | { "Used Mail Client","Benutzter Mail Client" }, |
903 | { "Channel:","Channel:" }, | 903 | { "Channel:","Channel:" }, |
904 | { "Message:","Message:" }, | 904 | { "Message:","Message:" }, |
905 | { "Parameters:","Parameter:" }, | 905 | { "Parameters:","Parameter:" }, |
906 | { "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, | 906 | { "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, |
907 | { "extra Message:","extra Message:" }, | 907 | { "extra Message:","extra Message:" }, |
908 | { "extra Parameters:","extra Parameter:" }, | 908 | { "extra Parameters:","extra Parameter:" }, |
909 | { "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, | 909 | { "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, |
910 | { "External Apps.","Externe Appl." }, | 910 | { "External Apps.","Externe Appl." }, |
911 | { "24 hours","24 Std." }, | 911 | { "24 hours","24 Std." }, |
912 | { "3 hours","3 Std." }, | 912 | { "3 hours","3 Std." }, |
913 | { "1 hour","1 Std." }, | 913 | { "1 hour","1 Std." }, |
914 | { "15 minutes","15 Min." }, | 914 | { "15 minutes","15 Min." }, |
915 | { "5 minutes","5 Min." }, | 915 | { "5 minutes","5 Min." }, |
916 | { "1 minute","1 Min." }, | 916 | { "1 minute","1 Min." }, |
917 | { "23","23" }, | 917 | { "23","23" }, |
918 | { "Mon 15","Mon 15" }, | 918 | { "Mon 15","Mon 15" }, |
919 | { "Configure KO","Konfiguriere KO" }, | 919 | { "Configure KO","Konfiguriere KO" }, |
920 | { "Event text","Termin Text" }, | 920 | { "Event text","Termin Text" }, |
921 | { "ToDo","Todo" }, | 921 | { "ToDo","Todo" }, |
922 | { "Today","Heute" }, | 922 | { "Today","Heute" }, |
923 | { "What's Next View","What's Next Ansicht" }, | 923 | { "What's Next View","What's Next Ansicht" }, |
924 | { "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, | 924 | { "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, |
925 | { "Alarm","Alarm" }, | 925 | { "Alarm","Alarm" }, |
926 | { "Used %1 Client","Benutzter %1 Client" }, | 926 | { "Used %1 Client","Benutzter %1 Client" }, |
927 | { "No email client installed","Kein Email Klient installiert" }, | 927 | { "No email client installed","Kein Email Klient installiert" }, |
928 | { "Userdefined email client","Benutzerdef. Email Klient" }, | 928 | { "Userdefined email client","Benutzerdef. Email Klient" }, |
929 | { "OM/Pi email client","OM/Pi Email Klient" }, | 929 | { "OM/Pi email client","OM/Pi Email Klient" }, |
930 | { "Include in multiple ","Beziehe in multiple " }, | 930 | { "Include in multiple ","Beziehe in multiple " }, |
931 | { "calendar ","Kalender " }, | 931 | { "calendar ","Kalender " }, |
932 | { "addressbook ","Adressbuch " }, | 932 | { "addressbook ","Adressbuch " }, |
933 | { "pwmanager","PWmanager" }, | 933 | { "pwmanager","PWmanager" }, |
934 | { " sync"," Sync ein" }, | 934 | { " sync"," Sync ein" }, |
935 | { "Write back synced data","Schreibe gesyncte Daten zurück" }, | 935 | { "Write back synced data","Schreibe gesyncte Daten zurück" }, |
936 | { "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, | 936 | { "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Einträge zurück" }, |
937 | { "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, | 937 | { "-- Write back (calendar) entries in future only","-- Schreibe nur zukünftige Kalender-Einträge zurück" }, |
938 | { "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, | 938 | { "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, |
939 | { "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, | ||
940 | { "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, | 939 | { "Mobile device (cell phone)","Mobiles Gerät (Handy)" }, |
941 | { "Help...","Hilfe..." }, | 940 | { "Help...","Hilfe..." }, |
942 | { "Local file Cal:","Lokale Datei Kal:" }, | 941 | { "Local file Cal:","Lokale Datei Kal:" }, |
943 | { "Local file ABook:","Lokale Datei ABuch:" }, | 942 | { "Local file ABook:","Lokale Datei ABuch:" }, |
944 | { "Local file PWMgr:","Lokale Datei PWMgr:" }, | 943 | { "Local file PWMgr:","Lokale Datei PWMgr:" }, |
945 | { "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, | 944 | { "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, |
946 | { "Calendar:","Kalender:" }, | 945 | { "Calendar:","Kalender:" }, |
947 | { "AddressBook:","AdressBuch:" }, | 946 | { "AddressBook:","AdressBuch:" }, |
948 | { "PWManager:","PWManager:" }, | 947 | { "PWManager:","PWManager:" }, |
949 | { "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, | 948 | { "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, |
950 | { "ssh/scp","ssh/scp" }, | 949 | { "ssh/scp","ssh/scp" }, |
951 | { "ftp","ftp" }, | 950 | { "ftp","ftp" }, |
952 | { "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, | 951 | { "Password for remote access: (could be the same for each)","Passwort für entfernten Zugriff: (kann dasselbe sein für alle)" }, |
953 | { "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, | 952 | { "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein für alle)" }, |
954 | { "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, | 953 | { "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte für alle unterschiedlich sein)" }, |
955 | { "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, | 954 | { "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Gerät" }, |
956 | { "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, | 955 | { "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Gerät" }, |
957 | { "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, | 956 | { "Insert device where\nphone is connected. E.g.:\n","Füge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, |
958 | { "KDE-Pim sync config","KDE-Pim sync Konfig" }, | 957 | { "KDE-Pim sync config","KDE-Pim sync Konfig" }, |
959 | { "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, | 958 | { "Insert kind of connection,e.g.:\n","Füge Art der Verbindung ein,z.B.:\n" }, |
960 | { "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, | 959 | { "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Empfohlen: Leer lassen!\n(So dass das Model\nautomatisch erkannt\nwerden kann)\nOder füge Model Name ein:\n" }, |
961 | { "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, | 960 | { "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, |
962 | { "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, | 961 | { "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, |
963 | { "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, | 962 | { "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, |
964 | { "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, | 963 | { "Enter port for Pi-Sync","Port Nummer für Pi-Sync" }, |
965 | { "Disable Pi-Sync","Schalte Pi-Sync aus" }, | 964 | { "Disable Pi-Sync","Schalte Pi-Sync aus" }, |
966 | { "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" }, | 965 | { "Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!","Wollen Sie wirklich\nmit allen selektierten\nProfilen "Multi-Syncen"?\nDas Syncen dauert einige Zeit -\nalle Profile werden zweimal gesynct!" }, |
967 | { "KDE-Pim Sync","KDE-Pim Sync" }, | 966 | { "KDE-Pim Sync","KDE-Pim Sync" }, |
968 | { "Multiple profiles","Multi-Sync Profile" }, | 967 | { "Multiple profiles","Multi-Sync Profile" }, |
969 | { "Device: ","Gerät: " }, | 968 | { "Device: ","Gerät: " }, |
970 | { "Multiple sync started.","Multi-Sync gestartet." }, | 969 | { "Multiple sync started.","Multi-Sync gestartet." }, |
971 | { "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, | 970 | { "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert für Multi-Sync" }, |
972 | { "Turn filter on","Schalte Filter an" }, | 971 | { "Turn filter on","Schalte Filter an" }, |
973 | { "Turn filter off","Schalte Filter aus" }, | 972 | { "Turn filter off","Schalte Filter aus" }, |
974 | { "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, | 973 | { "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, |
975 | { "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, | 974 | { "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgeschützt</p>\n" }, |
976 | { "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, | 975 | { "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, |
977 | { "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" }, | 976 | { "<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n","<p><b>Schwarz</b>: Termin/Todo mit Teilnehmern. Sie sind der Organisator!</p>\n" }, |
978 | { "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" }, | 977 | { "<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n","<p><b>Dunkelgrün</b>: Information(Beschreibung) verfügbar.([i] in WN Ansicht)</p>\n" }, |
979 | { "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" }, | 978 | { "<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n","<p><b>Blau</b>: Wiederholender Termin.([r] in Whats'Next Ansicht)</p>\n" }, |
980 | { "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" }, | 979 | { "<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n","<p><b>Rot</b>: Alarm gesetzt.([a] in Whats'Next Ansicht)</p>\n" }, |
981 | { "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" }, | 980 | { "<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n","<p><b>Kreuz</b>: Eintrag gecancelt.([c] in Whats'Next Ansicht)</p>\n" }, |
982 | { "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, | 981 | { "<p><b>(for square icons in agenda and month view)</b></p>\n","<p><b>(für quadratische Icons in Agenda und Monats Ansicht)</b></p>\n" }, |
983 | { "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, | 982 | { "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, |
984 | { "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, | 983 | { "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, |
985 | { "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, | 984 | { "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, |
986 | { "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, | 985 | { "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schließe Dialog.</p>\n" }, |
987 | { "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, | 986 | { "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, |
988 | { "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" }, | 987 | { "<p><b>shift+up/down</b>: Goto first/last item</p>\n","<p><b>shift+up/down</b>: Gehe zum ersten/letzten Eintrag</p>\n" }, |
989 | { "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" }, | 988 | { "<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n","<p><b>ctrl+up/down</b>: Gehe hoch/runter 20% aller Einträge</p>\n" }, |
990 | { "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, | 989 | { "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: Nächster/vorheriger Eintrag</p>\n" }, |
991 | { "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" }, | 990 | { "<p><b>return+shift</b>: Deselect item+one step down</p>\n","<p><b>return+shift</b>: Deselektiere Item+Cursor einen Eintrag runter</p>\n" }, |
992 | { "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, | 991 | { "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, |
993 | { "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" }, | 992 | { "<p><b>I</b>: Show info of current item+one step down.</p>\n","<p><b>I</b>: Zeige Detail-Ansicht vom sel.Eintrag+Cursor einen Eintrag runter.</p>\n" }, |
994 | { "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, | 993 | { "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, |
995 | { "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" }, | 994 | { "<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n","<p><b>return+shift</b>: Markiere Todo als nicht erledigt+Cursor einen Eintrag runter</p>\n" }, |
996 | { "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" }, | 995 | { "<p><b>return</b>: Mark item as completed+one step down.</p>\n","<p><b>return</b>: Markiere Todo als erledigt+Cursor einen Eintrag runter.</p>\n" }, |
997 | { "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, | 996 | { "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, |
998 | { "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, | 997 | { "<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n","<p><b>shift+P</b>: Mache Todo zum neuen <b>P</b>arent Todo für das Todo, welches mit shift+Sselektiert wurde.</p>\n" }, |
999 | { "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" }, | 998 | { "<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n","<p><b>shift+S</b>: Mache Todo zum <b>S</b>ubtodo</p>\n" }, |
1000 | { "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" }, | 999 | { "<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n","<p><b>shift+U</b>: <b>U</b>nparent Todo (Mache Sub-Todo zum Toplevel Todo)</p>\n" }, |
1001 | { "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, | 1000 | { "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, |
1002 | { "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, | 1001 | { "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, |
1003 | { "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, | 1002 | { "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, |
1004 | { "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, | 1003 | { "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, |
1005 | { "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, | 1004 | { "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: Lösche selektiertes Item</p>\n" }, |
1006 | { "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, | 1005 | { "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, |
1007 | { "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" }, | 1006 | { "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: Nächste Woche | <b>right+ctrl</b>: Nächste Woche</p>\n" }, |
1008 | { "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, | 1007 | { "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, |
1009 | { "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, | 1008 | { "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, |
1010 | { "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" }, | 1009 | { "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda Höhe</p>\n" }, |
1011 | { "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" }, | 1010 | { "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: Füge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" }, |
1012 | { "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, | 1011 | { "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, |
1013 | { "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, | 1012 | { "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, |
1014 | { "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, | 1013 | { "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, |
1015 | { "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, | 1014 | { "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, |
1016 | { "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, | 1015 | { "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, |
1017 | { "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, | 1016 | { "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: Nächste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, |
1018 | { "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, | 1017 | { "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, |
1019 | { "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, | 1018 | { "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, |
1020 | { "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, | 1019 | { "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, |
1021 | { "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" }, | 1020 | { "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) für selektiertes Item</p>\n" }, |
1022 | { "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, | 1021 | { "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, |
1023 | { "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, | 1022 | { "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, |
1024 | { "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, | 1023 | { "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas geändert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgründen wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\nÄnderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie können eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, |
1025 | { "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, | 1024 | { "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, |
1026 | { "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, | 1025 | { "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, |
1027 | { "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, | 1026 | { "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, |
1028 | { "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, | 1027 | { "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, |
1029 | { "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" }, | 1028 | { "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nfür den Zaurus ist verfügbar\nals zusätzliche Anwendung\n" }, |
1030 | { "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" }, | 1029 | { "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann möglicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterstützt.\n" }, |
1031 | { "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, | 1030 | { "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, |
1032 | { "KO/Pi FAQ","KO/Pi FAQ" }, | 1031 | { "KO/Pi FAQ","KO/Pi FAQ" }, |
1033 | { "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" }, | 1032 | { "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nfür: Zaurus 5x00/7x0/860/3000/6000\n" }, |
1034 | { "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, | 1033 | { "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, |
1035 | { "About KOrganizer/Pi","Über KOrganizer/Pi" }, | 1034 | { "About KOrganizer/Pi","Über KOrganizer/Pi" }, |
1036 | { "From: ","Von: " }, | 1035 | { "From: ","Von: " }, |
1037 | { "Remove sync info","Entferne Sync Info" }, | 1036 | { "Remove sync info","Entferne Sync Info" }, |
1038 | { "For all profiles","Für alle Profile" }, | 1037 | { "For all profiles","Für alle Profile" }, |
1039 | { "Hide not Running","Verstecke nicht Laufende" }, | 1038 | { "Hide not Running","Verstecke nicht Laufende" }, |
1040 | { "ME","ME" }, | 1039 | { "ME","ME" }, |
1041 | { "Toolbar","Toolbar" }, | 1040 | { "Toolbar","Toolbar" }, |
1042 | { "Undo Delete...","UNDO Löschen..." }, | 1041 | { "Undo Delete...","UNDO Löschen..." }, |
1043 | { "Undo Delete","Löschen rückgängig machen" }, | 1042 | { "Undo Delete","Löschen rückgängig machen" }, |
1044 | { "KDE Sync HowTo...","KDE Sync HowTo..." }, | 1043 | { "KDE Sync HowTo...","KDE Sync HowTo..." }, |
1045 | { "Multi Sync HowTo...","Multi Sync HowTo..." }, | 1044 | { "Multi Sync HowTo...","Multi Sync HowTo..." }, |
1046 | { "Januar","Januar" }, | 1045 | { "Januar","Januar" }, |
1047 | { "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, | 1046 | { "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, |
1048 | { "No Filter","Kein Filter" }, | 1047 | { "No Filter","Kein Filter" }, |
1049 | { "Multiple Sync options","Multi Sync Optionen" }, | 1048 | { "Multiple Sync options","Multi Sync Optionen" }, |
1050 | { "Sync algo options","Sync Ablauf Optionen" }, | 1049 | { "Sync algo options","Sync Ablauf Optionen" }, |
1051 | { "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, | 1050 | { "Apply filter when adding data to local:","Filter für das Hinzufügen von Daten zu Lokal:" }, |
1052 | { "Incoming calendar filter:","Eingehender Kalender Filter:" }, | 1051 | { "Incoming calendar filter:","Eingehender Kalender Filter:" }, |
1053 | { "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, | 1052 | { "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, |
1054 | { "Write back options","Optionen zum Zurückschreiben" }, | 1053 | { "Write back options","Optionen zum Zurückschreiben" }, |
1055 | { "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, | 1054 | { "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Einträge zurück" }, |
1056 | { "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, | 1055 | { "Apply filter when adding data to remote:","Filter für das Hinzufügen von Daten zu Entfernt:" }, |
1057 | { "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, | 1056 | { "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, |
1058 | { "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, | 1057 | { "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, |
1059 | { "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, | 1058 | { "Write back (calendar) entries for time period only","Schreibe nur Kalender Einträge für Zeitspanne zurück" }, |
1060 | { "Time period","Zeitspanne" }, | 1059 | { "Time period","Zeitspanne" }, |
1061 | { "From ","Von " }, | 1060 | { "From ","Von " }, |
1062 | { " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, | 1061 | { " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, |
1063 | { " weeks in the future "," Wochen in der Zukunft " }, | 1062 | { " weeks in the future "," Wochen in der Zukunft " }, |
1064 | { "Profile kind specific settings","Profil Art abhängige Einstellungen" }, | 1063 | { "Profile kind specific settings","Profil Art abhängige Einstellungen" }, |
1065 | { "Local temp file:","Lokale temp Datei:" }, | 1064 | { "Local temp file:","Lokale temp Datei:" }, |
1066 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, | 1065 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, |
1067 | { "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, | 1066 | { "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, |
1068 | { "Language","Sprache" }, | 1067 | { "Language","Sprache" }, |
1069 | { "Time Format","Zeit Format" }, | 1068 | { "Time Format","Zeit Format" }, |
1070 | { "Time Zone","Zeit Zone" }, | 1069 | { "Time Zone","Zeit Zone" }, |
1071 | { "%1 groups subscribed","%1 Guppen abboniert" }, | 1070 | { "%1 groups subscribed","%1 Guppen abboniert" }, |
1072 | { "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, | 1071 | { "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, |
1073 | { "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, | 1072 | { "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, |
1074 | { "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, | 1073 | { "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, |
1075 | { "Save settings","Speichere Einstellungen" }, | 1074 | { "Save settings","Speichere Einstellungen" }, |
1076 | { "Save standard","Speichere Standard" }, | 1075 | { "Save standard","Speichere Standard" }, |
1077 | { "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, | 1076 | { "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, |
1078 | { "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, | 1077 | { "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, |
1079 | { "Data storage path","Daten Speicherpfad" }, | 1078 | { "Data storage path","Daten Speicherpfad" }, |
1080 | { "Language","Sprache" }, | 1079 | { "Language","Sprache" }, |
1081 | { "Show time in agenda items","Zeige Zeit in Agenda Items" }, | 1080 | { "Show time in agenda items","Zeige Zeit in Agenda Items" }, |
1082 | { "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, | 1081 | { "Color for Sundays + category "Holiday"","Farbe für Sonntags + Kategorie "Feiertag"" }, |
1083 | { "Show events that are done","Zeige abgelaufene Termine" }, | 1082 | { "Show events that are done","Zeige abgelaufene Termine" }, |
1084 | { "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, | 1083 | { "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, |
1085 | { "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, | 1084 | { "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, |
1086 | { "KO/Pi","KO/Pi" }, | 1085 | { "KO/Pi","KO/Pi" }, |
1087 | { "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, | 1086 | { "There is nothing to undo!","Es gibt nichts zum\nRückgängigmachen!" }, |
1088 | { "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, | 1087 | { "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, |
1089 | { "Sound.Al.: ","Sound.Al.: " }, | 1088 | { "Sound.Al.: ","Sound.Al.: " }, |
1090 | { "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, | 1089 | { "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, |
1091 | { "Restore","Wiederherstellen" }, | 1090 | { "Restore","Wiederherstellen" }, |
1092 | { "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklich\nwiederherstellen?" }, | 1091 | { "\nAre you sure you want\nto restore this?","\nMöchten Sie das wirklich\nwiederherstellen?" }, |
1093 | { "% completed","% erledigt" }, | 1092 | { "% completed","% erledigt" }, |
1094 | { "%d item(s) found.","%d Item(s) gefunden." }, | 1093 | { "%d item(s) found.","%d Item(s) gefunden." }, |
1095 | { "Set complete","Setze auf erledigt" }, | 1094 | { "Set complete","Setze auf erledigt" }, |
1096 | { "(cancelled)","(gecancelt)" }, | 1095 | { "(cancelled)","(gecancelt)" }, |
1097 | { "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, | 1096 | { "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, |
1098 | { " Local time "," Lokale Zeit " }, | 1097 | { " Local time "," Lokale Zeit " }, |
1099 | { "Form2","Form2" }, | 1098 | { "Form2","Form2" }, |
1100 | { "Filter enabled","Filter angeschaltet" }, | 1099 | { "Filter enabled","Filter angeschaltet" }, |
1101 | { "Edit Filters","Ändere Filter" }, | 1100 | { "Edit Filters","Ändere Filter" }, |
1102 | { "Print What's Next View...","Drucke What's Next Ansicht..." }, | 1101 | { "Print What's Next View...","Drucke What's Next Ansicht..." }, |
1103 | { "Agenda","Agenda" }, | 1102 | { "Agenda","Agenda" }, |
1104 | { " ("," (" }, | 1103 | { " ("," (" }, |
1105 | { "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, | 1104 | { "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, |
1106 | { "Print","Print" }, | 1105 | { "Print","Print" }, |
1107 | { "&Setup Printer...","Drucker &Setup..." }, | 1106 | { "&Setup Printer...","Drucker &Setup..." }, |
1108 | { "View Type","Zeige Typ" }, | 1107 | { "View Type","Zeige Typ" }, |
1109 | { "Page &orientation:","Seiten Ausrichtung:" }, | 1108 | { "Page &orientation:","Seiten Ausrichtung:" }, |
1110 | { "Use Default of Selected Style","Default des selektierten Stils" }, | 1109 | { "Use Default of Selected Style","Default des selektierten Stils" }, |
1111 | { "Use Default Setting of Printer","Default Einstellung des Druckers" }, | 1110 | { "Use Default Setting of Printer","Default Einstellung des Druckers" }, |
1112 | { "Portrait","Portrait" }, | 1111 | { "Portrait","Portrait" }, |
1113 | { "Landscape","Landschaft" }, | 1112 | { "Landscape","Landschaft" }, |
1114 | { "Print day","Drucke Tag" }, | 1113 | { "Print day","Drucke Tag" }, |
1115 | { "CalPrintDay_Base","CalPrintDay_Base" }, | 1114 | { "CalPrintDay_Base","CalPrintDay_Base" }, |
1116 | { "Date && Time Range","Datum && Zeitspanne" }, | 1115 | { "Date && Time Range","Datum && Zeitspanne" }, |
1117 | { "&End date:","&Enddatum:" }, | 1116 | { "&End date:","&Enddatum:" }, |
1118 | { "&Start date:","&Startdatum:" }, | 1117 | { "&Start date:","&Startdatum:" }, |
1119 | { "Start &time:","Startzeit:" }, | 1118 | { "Start &time:","Startzeit:" }, |
1120 | { "End ti&me:","Endzeit:" }, | 1119 | { "End ti&me:","Endzeit:" }, |
1121 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, | 1120 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, |
1122 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, | 1121 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, |
1123 | { "Alt+D","Alt+D" }, | 1122 | { "Alt+D","Alt+D" }, |
1124 | { "&Use colors","Nutze Farben" }, | 1123 | { "&Use colors","Nutze Farben" }, |
1125 | { "Alt+U","Alt+U" }, | 1124 | { "Alt+U","Alt+U" }, |
1126 | { "Print week","Drucke Woche" }, | 1125 | { "Print week","Drucke Woche" }, |
1127 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, | 1126 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, |
1128 | { "Use &colors","Nutze Farben" }, | 1127 | { "Use &colors","Nutze Farben" }, |
1129 | { "Type of View","Typ der Ansicht" }, | 1128 | { "Type of View","Typ der Ansicht" }, |
1130 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, | 1129 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, |
1131 | { "Alt+F","Alt+F" }, | 1130 | { "Alt+F","Alt+F" }, |
@@ -1382,199 +1381,205 @@ | |||
1382 | { "Filtermenu","Filtermenu" }, | 1381 | { "Filtermenu","Filtermenu" }, |
1383 | { "Toggle Fullscreen","Vollbild umschalten" }, | 1382 | { "Toggle Fullscreen","Vollbild umschalten" }, |
1384 | { "Toggle Resource View","Resourcenansicht umschalten" }, | 1383 | { "Toggle Resource View","Resourcenansicht umschalten" }, |
1385 | { "Storage HowTo...","Speicherort HowTo..." }, | 1384 | { "Storage HowTo...","Speicherort HowTo..." }, |
1386 | { "Timetracking HowTo...","Timetracking HowTo..." }, | 1385 | { "Timetracking HowTo...","Timetracking HowTo..." }, |
1387 | { "Juni","Juni" }, | 1386 | { "Juni","Juni" }, |
1388 | { "Juli","Juli" }, | 1387 | { "Juli","Juli" }, |
1389 | { "ToDo:","ToDo:" }, | 1388 | { "ToDo:","ToDo:" }, |
1390 | { "Set Calendar","Setze Kalender" }, | 1389 | { "Set Calendar","Setze Kalender" }, |
1391 | { "Todo: %1","Todo: %1" }, | 1390 | { "Todo: %1","Todo: %1" }, |
1392 | { ": (Prio ",": (Prio " }, | 1391 | { ": (Prio ",": (Prio " }, |
1393 | { "Todos","Todos" }, | 1392 | { "Todos","Todos" }, |
1394 | { "Todo Viewer","Todo Anzeige" }, | 1393 | { "Todo Viewer","Todo Anzeige" }, |
1395 | { "Todo ","Todo " }, | 1394 | { "Todo ","Todo " }, |
1396 | { " Calendar \n Resource "," Kalender \n Resource " }, | 1395 | { " Calendar \n Resource "," Kalender \n Resource " }, |
1397 | { " Color "," Farbe " }, | 1396 | { " Color "," Farbe " }, |
1398 | { "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" }, | 1397 | { "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" }, |
1399 | { "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, | 1398 | { "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, |
1400 | { "Add new Calendar","Füge Kalender hinzu" }, | 1399 | { "Add new Calendar","Füge Kalender hinzu" }, |
1401 | { "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, | 1400 | { "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, |
1402 | { "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, | 1401 | { "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, |
1403 | { "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, | 1402 | { "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, |
1404 | { "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, | 1403 | { "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, |
1405 | { "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" }, | 1404 | { "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" }, |
1406 | { "Global application font for all apps:","Globale Schriftart:" }, | 1405 | { "Global application font for all apps:","Globale Schriftart:" }, |
1407 | { "Application Font","Applikationsschriftart" }, | 1406 | { "Application Font","Applikationsschriftart" }, |
1408 | { "Kx/Pi","Kx/Pi" }, | 1407 | { "Kx/Pi","Kx/Pi" }, |
1409 | { "Backup","Backup" }, | 1408 | { "Backup","Backup" }, |
1410 | { "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, | 1409 | { "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, |
1411 | { "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" }, | 1410 | { "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" }, |
1412 | { "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" }, | 1411 | { "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" }, |
1413 | { "Choose Color","Wähle Farbe" }, | 1412 | { "Choose Color","Wähle Farbe" }, |
1414 | { " OK "," OK " }, | 1413 | { " OK "," OK " }, |
1415 | { " Cancel "," Abbrechen " }, | 1414 | { " Cancel "," Abbrechen " }, |
1416 | { "Matching items will be added to list","Passende werden zur Liste hinzugefügt" }, | 1415 | { "Matching items will be added to list","Passende werden zur Liste hinzugefügt" }, |
1417 | { "Matching items will be removed from list","Passende werden von der Liste entfernt" }, | 1416 | { "Matching items will be removed from list","Passende werden von der Liste entfernt" }, |
1418 | { "Search on displayed list only","Suche auf der dargestellten Liste" }, | 1417 | { "Search on displayed list only","Suche auf der dargestellten Liste" }, |
1419 | { "List will be cleared before search","Liste wird vor der Suche gelöscht" }, | 1418 | { "List will be cleared before search","Liste wird vor der Suche gelöscht" }, |
1420 | { "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" }, | 1419 | { "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" }, |
1421 | { "%1\nis running!","%1\nist am Laufen!" }, | 1420 | { "%1\nis running!","%1\nist am Laufen!" }, |
1422 | { "Additional Comment:","Zusätzlicher Kommentar:" }, | 1421 | { "Additional Comment:","Zusätzlicher Kommentar:" }, |
1423 | { "Stop and save","Stopp und Speichern" }, | 1422 | { "Stop and save","Stopp und Speichern" }, |
1424 | { "Continue running","Weiter laufen lassen" }, | 1423 | { "Continue running","Weiter laufen lassen" }, |
1425 | { "Stop - do not save","Stopp - nicht Speichern" }, | 1424 | { "Stop - do not save","Stopp - nicht Speichern" }, |
1426 | { "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" }, | 1425 | { "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" }, |
1427 | { "Time mismatch!","Zeiten stimmen nicht!" }, | 1426 | { "Time mismatch!","Zeiten stimmen nicht!" }, |
1428 | { "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, | 1427 | { "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, |
1429 | { "Yes, stop todo","Ja, stoppe Todo" }, | 1428 | { "Yes, stop todo","Ja, stoppe Todo" }, |
1430 | { "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, | 1429 | { "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, |
1431 | { "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, | 1430 | { "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, |
1432 | { "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." }, | 1431 | { "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." }, |
1433 | { "Spouse","Ehegatte" }, | 1432 | { "Spouse","Ehegatte" }, |
1434 | { "Notes","Notizen" }, | 1433 | { "Notes","Notizen" }, |
1435 | { "Messanger","Messanger" }, | 1434 | { "Messanger","Messanger" }, |
1436 | { "Assistant","Assistent" }, | 1435 | { "Assistant","Assistent" }, |
1437 | { "Manager","Manager" }, | 1436 | { "Manager","Manager" }, |
1438 | { "Secrecy","Sichtbar" }, | 1437 | { "Secrecy","Sichtbar" }, |
1439 | { "male","männlich" }, | 1438 | { "male","männlich" }, |
1440 | { "female","weiblich" }, | 1439 | { "female","weiblich" }, |
1441 | { "Hide!","Verbergen!" }, | 1440 | { "Hide!","Verbergen!" }, |
1442 | { "Show!","Anzeigen!" }, | 1441 | { "Show!","Anzeigen!" }, |
1443 | { "Details","Details" }, | 1442 | { "Details","Details" }, |
1444 | { "Profession","Beruf" }, | 1443 | { "Profession","Beruf" }, |
1445 | { "Children","Kinder" }, | 1444 | { "Children","Kinder" }, |
1446 | { "Department","Abteilung" }, | 1445 | { "Department","Abteilung" }, |
1447 | { "Backup cancelled","Backup abgebrochen" }, | 1446 | { "Backup cancelled","Backup abgebrochen" }, |
1448 | { "Backup globally disabled","Backup global abgeschaltet" }, | 1447 | { "Backup globally disabled","Backup global abgeschaltet" }, |
1449 | { "Backup succesfully finished","Backup erfolgreich beendet" }, | 1448 | { "Backup succesfully finished","Backup erfolgreich beendet" }, |
1450 | { "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, | 1449 | { "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, |
1451 | { "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, | 1450 | { "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, |
1452 | { "Birthdays","Geburtstage" }, | 1451 | { "Birthdays","Geburtstage" }, |
1453 | { "KO/Pi import information!","KO/Pi Import Information!" }, | 1452 | { "KO/Pi import information!","KO/Pi Import Information!" }, |
1454 | { "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, | 1453 | { "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, |
1455 | { "Cancel - do not start"," Abbrechen - Todo nicht starten" }, | 1454 | { "Cancel - do not start"," Abbrechen - Todo nicht starten" }, |
1456 | { "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, | 1455 | { "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, |
1457 | { "Reload","Neu laden" }, | 1456 | { "Reload","Neu laden" }, |
1458 | { "Timezone settings","Zeitzoneneinstellung" }, | 1457 | { "Timezone settings","Zeitzoneneinstellung" }, |
1459 | { "Title: ","Titel: " }, | 1458 | { "Title: ","Titel: " }, |
1460 | { "Journal from: ","Journal vom: " }, | 1459 | { "Journal from: ","Journal vom: " }, |
1461 | { "Journal: %1 from ","Journal: %1 vom " }, | 1460 | { "Journal: %1 from ","Journal: %1 vom " }, |
1462 | { "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, | 1461 | { "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, |
1463 | { "Selected Item","Ausgewähltes Item" }, | 1462 | { "Selected Item","Ausgewähltes Item" }, |
1464 | { "Select Date...","Wähle Datum..." }, | 1463 | { "Select Date...","Wähle Datum..." }, |
1465 | { "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, | 1464 | { "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, |
1466 | { "Change category list now!","Ändere Kategorieliste jetzt!" }, | 1465 | { "Change category list now!","Ändere Kategorieliste jetzt!" }, |
1467 | { "Edit category list...","Ändere Kategorieliste..." }, | 1466 | { "Edit category list...","Ändere Kategorieliste..." }, |
1468 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, | 1467 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, |
1469 | { "Filepath: ","Dateipfad: " }, | 1468 | { "Filepath: ","Dateipfad: " }, |
1470 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, | 1469 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, |
1471 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, | 1470 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, |
1472 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, | 1471 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, |
1473 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, | 1472 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, |
1474 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, | 1473 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, |
1475 | { "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, | 1474 | { "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, |
1476 | { "Alarm Options","Alarm Einstellungen" }, | 1475 | { "Alarm Options","Alarm Einstellungen" }, |
1477 | { "Delete selected...","Lösche Ausgewählte..." }, | 1476 | { "Delete selected...","Lösche Ausgewählte..." }, |
1478 | { "None","Nichts" }, | 1477 | { "None","Nichts" }, |
1479 | { "Selection","Auswahl" }, | 1478 | { "Selection","Auswahl" }, |
1480 | { "Set categories","Setze Kategorien" }, | 1479 | { "Set categories","Setze Kategorien" }, |
1481 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, | 1480 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, |
1482 | { "Reset","Neu setzen" }, | 1481 | { "Reset","Neu setzen" }, |
1483 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, | 1482 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, |
1484 | { "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, | 1483 | { "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, |
1485 | { "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, | 1484 | { "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, |
1486 | { "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, | 1485 | { "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, |
1487 | { "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, | 1486 | { "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, |
1488 | { "Edit","Edit" }, | 1487 | { "Edit","Edit" }, |
1489 | { "Last Modified","Zuletzt geändert" }, | 1488 | { "Last Modified","Zuletzt geändert" }, |
1490 | { "Journal viewer","Journal Anzeige" }, | 1489 | { "Journal viewer","Journal Anzeige" }, |
1491 | { "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, | 1490 | { "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, |
1492 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, | 1491 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, |
1493 | { "Hide Completed","Verstecke erledigte Todos" }, | 1492 | { "Hide Completed","Verstecke erledigte Todos" }, |
1494 | { "Show not Running","Zeige nicht Laufende" }, | 1493 | { "Show not Running","Zeige nicht Laufende" }, |
1495 | { "Click to add new Todo","Klick für neues Todo!" }, | 1494 | { "Click to add new Todo","Klick für neues Todo!" }, |
1496 | { "Show next conflict for","Zeige nächsten Konflikt für" }, | 1495 | { "Show next conflict for","Zeige nächsten Konflikt für" }, |
1497 | { "All events","Alle Termine" }, | 1496 | { "All events","Alle Termine" }, |
1498 | { "Allday events","Ganztagestermine" }, | 1497 | { "Allday events","Ganztagestermine" }, |
1499 | { "Events with time","Termine mit Zeit" }, | 1498 | { "Events with time","Termine mit Zeit" }, |
1500 | { "No conflict found","Kein Konflikt gefunden" }, | 1499 | { "No conflict found","Kein Konflikt gefunden" }, |
1501 | { "Conflict %1 <-> %2","Konflikt %1 <-> %2" }, | 1500 | { "Conflict %1 <-> %2","Konflikt %1 <-> %2" }, |
1502 | { "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " }, | 1501 | { "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " }, |
1503 | { "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" }, | 1502 | { "Week view mode uses row layout","Wochenansicht Modus nutzt Reihenlayout" }, |
1504 | { "The event\n%1\nconflicts with event\n%2\nat date\n%3.\n","Der Termin\n%1\nist im Konflikt mit Termin\n%2\nam Datum\n%3.\n" }, | 1503 | { "The event\n%1\nconflicts with event\n%2\nat date\n%3.\n","Der Termin\n%1\nist im Konflikt mit Termin\n%2\nam Datum\n%3.\n" }, |
1505 | { "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" }, | 1504 | { "KO/Pi Conflict detected","KO/Pi Konflikt erkannt" }, |
1506 | { "Show date","Zeige Datum" }, | 1505 | { "Show date","Zeige Datum" }, |
1507 | { "No problem!","Null Problemo!" }, | 1506 | { "No problem!","Null Problemo!" }, |
1508 | { "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, | 1507 | { "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, |
1509 | { "Pi-Sync Port Error","Pi-Sync Port Fehler" }, | 1508 | { "Pi-Sync Port Error","Pi-Sync Port Fehler" }, |
1510 | { "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, | 1509 | { "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, |
1511 | { "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, | 1510 | { "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, |
1512 | { "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, | 1511 | { "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, |
1513 | { "Pi-Sync Error","Pi-Sync Fehler" }, | 1512 | { "Pi-Sync Error","Pi-Sync Fehler" }, |
1514 | { "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, | 1513 | { "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, |
1515 | { "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, | 1514 | { "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, |
1516 | { "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, | 1515 | { "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, |
1517 | { "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, | 1516 | { "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, |
1518 | { "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, | 1517 | { "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, |
1519 | { "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, | 1518 | { "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, |
1520 | { "Receiving file from remote...","Empfange entfernte Datei..." }, | 1519 | { "Receiving file from remote...","Empfange entfernte Datei..." }, |
1521 | { "Sending back synced file...","Sende synchronisierte Datei zurück..." }, | 1520 | { "Sending back synced file...","Sende synchronisierte Datei zurück..." }, |
1522 | { "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, | 1521 | { "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, |
1523 | { "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, | 1522 | { "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, |
1524 | { "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, | 1523 | { "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, |
1525 | { "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, | 1524 | { "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, |
1526 | { "Writing back file ...","Schreibe Datei zurück..." }, | 1525 | { "Writing back file ...","Schreibe Datei zurück..." }, |
1527 | { "Sending back file ...","Sende Datei zurück..." }, | 1526 | { "Sending back file ...","Sende Datei zurück..." }, |
1528 | { "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" }, | 1527 | { "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" }, |
1529 | { "Created","Angelegt" }, | 1528 | { "Created","Angelegt" }, |
1530 | { "Last Modified Sub","Zuletzt geändertes Sub" }, | 1529 | { "Last Modified Sub","Zuletzt geändertes Sub" }, |
1531 | { "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" }, | 1530 | { "Checking conflicts ... please wait","Überprüfe Konflikte ... bitte warten" }, |
1532 | { "Show times on two lines","Zeige Zeiten auf zwei Zeilen" }, | 1531 | { "Show times on two lines","Zeige Zeiten auf zwei Zeilen" }, |
1533 | { "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, | 1532 | { "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, |
1534 | { "Duration","Dauer" }, | 1533 | { "Duration","Dauer" }, |
1535 | { " day"," Tag" }, | 1534 | { " day"," Tag" }, |
1536 | { "Click this button to display all todos in a <b>flat</b> hierarchy","Klicke diesen Knopf um alle Todos in einer <b>flachen</b> Hierarchie darzustellen" }, | 1535 | { "Click this button to display all todos in a <b>flat</b> hierarchy","Klicke diesen Knopf um alle Todos in einer <b>flachen</b> Hierarchie darzustellen" }, |
1537 | { "Click this button to display all todos <b>openend</b>","Klicke diesen Knopf um alle Todos <b>geöffnet</b> darzustellen" }, | 1536 | { "Click this button to display all todos <b>openend</b>","Klicke diesen Knopf um alle Todos <b>geöffnet</b> darzustellen" }, |
1538 | { "Click this button to display all todos <b>closed</b>","Klicke diesen Knopf um alle Todos <b>geschlossen</b> darzustellen" }, | 1537 | { "Click this button to display all todos <b>closed</b>","Klicke diesen Knopf um alle Todos <b>geschlossen</b> darzustellen" }, |
1539 | { "Click this button to toggle show/hide <b>running</b> todos","Klicke diesen Knopf um <b>zeige Laufende</b> umzuschalten" }, | 1538 | { "Click this button to toggle show/hide <b>running</b> todos","Klicke diesen Knopf um <b>zeige Laufende</b> umzuschalten" }, |
1540 | { "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" }, | 1539 | { "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" }, |
1541 | { "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" }, | 1540 | { "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" }, |
1542 | { "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." }, | 1541 | { "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." }, |
1543 | { "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." }, | 1542 | { "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." }, |
1544 | { "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." }, | 1543 | { "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." }, |
1545 | { "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." }, | 1544 | { "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." }, |
1546 | { "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." }, | 1545 | { "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." }, |
1547 | { "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" }, | 1546 | { "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" }, |
1548 | { "Error saving data","Fehler beim Abspeichern" }, | 1547 | { "Error saving data","Fehler beim Abspeichern" }, |
1549 | { "Calendar(s) not saved:","Nicht gespeicherte Kalender:" }, | 1548 | { "Calendar(s) not saved:","Nicht gespeicherte Kalender:" }, |
1550 | { "Enable conflict detection","Schalte Konflikterkennung an" }, | 1549 | { "Enable conflict detection","Schalte Konflikterkennung an" }, |
1551 | { "Filter for the edited event","Filter für den bearbeiteten Termin" }, | 1550 | { "Filter for the edited event","Filter für den bearbeiteten Termin" }, |
1552 | { "Filter for other events","Filter für die anderen Termine" }, | 1551 | { "Filter for other events","Filter für die anderen Termine" }, |
1553 | { "Check Allday with Allday","Prüfe GanzTag mit GanzTag" }, | 1552 | { "Check Allday with Allday","Prüfe GanzTag mit GanzTag" }, |
1554 | { "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" }, | 1553 | { "Check Allday with NonAllday","Prüfe GanzTag mit NichtGanzTag" }, |
1555 | { "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" }, | 1554 | { "Check NonAllday with Allday","Prüfe NichtGanzTag mit GanzTag" }, |
1556 | { "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" }, | 1555 | { "Check NonAllday with NonAllday","Prüfe NichtGanzTag mit NichtGanzTag" }, |
1557 | { "Conflict detection","Konflikterkennung" }, | 1556 | { "Conflict detection","Konflikterkennung" }, |
1558 | { "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" }, | 1557 | { "Loading calendar files ... please wait","Lade Kalenderdateien ... bitte warten" }, |
1559 | { "Show multiday allday ev. in date nav.","Zeige Multi-Ganzt.Term.in Datums Nav." }, | 1558 | { "Show multiday allday ev. in date nav.","Zeige Multi-Ganzt.Term.in Datums Nav." }, |
1560 | { "Include events which "show as free"","Inklusive Termine mit "Zeige Zeit als frei"" }, | 1559 | { "Include events which "show as free"","Inklusive Termine mit "Zeige Zeit als frei"" }, |
1561 | { "Conflict detection checks an <b>edited event</b> with <b>other events</b> for overlapping.","Konflikterkennung prüft einen <b>bearbeiteten Termin</b> auf Überschneidungen mit <b>anderen Terminen</b>." }, | 1560 | { "Conflict detection checks an <b>edited event</b> with <b>other events</b> for overlapping.","Konflikterkennung prüft einen <b>bearbeiteten Termin</b> auf Überschneidungen mit <b>anderen Terminen</b>." }, |
1562 | { " Yes, close "," Ja, beenden " }, | 1561 | { " Yes, close "," Ja, beenden " }, |
1563 | { "Export All Data","Exportiere alle Daten" }, | 1562 | { "Export All Data","Exportiere alle Daten" }, |
1564 | { "You can save all data\nto another file via\nFile->Export->Export All Data","Sie können alle Daten in\neine andere Datei speichern unter\nDatei->Exportiere->Exportiere alle Daten" }, | 1563 | { "You can save all data\nto another file via\nFile->Export->Export All Data","Sie können alle Daten in\neine andere Datei speichern unter\nDatei->Exportiere->Exportiere alle Daten" }, |
1565 | { "<p><b>Duration:</b> %1 days</p>","<p><b>Dauer:</b> %1 Tage</p>" }, | 1564 | { "<p><b>Duration:</b> %1 days</p>","<p><b>Dauer:</b> %1 Tage</p>" }, |
1566 | { " (Duration: %1 days)"," (Dauer: %1 Tage)" }, | 1565 | { " (Duration: %1 days)"," (Dauer: %1 Tage)" }, |
1567 | { "Autosave enabled!","Auto-Speichern angeschaltet!" }, | 1566 | { "Autosave enabled!","Auto-Speichern angeschaltet!" }, |
1568 | { "Autosave disabled! Save timer stopped!","Auto-Speichern ausgeschaltet! Speicher Timer gestoppt!" }, | 1567 | { "Autosave disabled! Save timer stopped!","Auto-Speichern ausgeschaltet! Speicher Timer gestoppt!" }, |
1569 | { "Autosave disabled!","Auto-Speichern ist ausgeschaltet!" }, | 1568 | { "Autosave disabled!","Auto-Speichern ist ausgeschaltet!" }, |
1570 | { "Yes, Save!","Ja, Speichern!" }, | 1569 | { "Yes, Save!","Ja, Speichern!" }, |
1571 | { "Calendar is modified\nbut Autosave is disabled!\nDo you want\nto save the data?","Der Kalender wurde verändert,\naber Auto-Speichern ist\nabgeschaltet. Möchten Sie\ndie Daten speichern?" }, | 1570 | { "Calendar is modified\nbut Autosave is disabled!\nDo you want\nto save the data?","Der Kalender wurde verändert,\naber Auto-Speichern ist\nabgeschaltet. Möchten Sie\ndie Daten speichern?" }, |
1572 | { "<p><b>C+ctrl</b>: Dis/enable automatic saving</p>\n","<p><b>C+ctrl</b>: Auto-Speichern ab/anschalten</p>\n" }, | 1571 | { "<p><b>C+ctrl</b>: Dis/enable automatic saving</p>\n","<p><b>C+ctrl</b>: Auto-Speichern ab/anschalten</p>\n" }, |
1573 | { "<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>","<br>Der Kalender enthält<br><b>%1 Termine<br>%2 Todos<br>%3 Journale</b>" }, | 1572 | { "<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>","<br>Der Kalender enthält<br><b>%1 Termine<br>%2 Todos<br>%3 Journale</b>" }, |
1573 | { "Enable alarm in resource settings","Schalte Alarm in Resourcenansicht wieder an" }, | ||
1574 | { "The alarm for this calendar\nis currently disabled!\nEnable it in resource settings.","Der Alarm für diesen Kalender\nist abgeschaltet.\nSchalten Sie ihn in der\nResourcenansicht ggf. an." }, | ||
1575 | { "Alarm disabled warning","Nichtaktiver Alarm" }, | ||
1576 | { "Pi-Sync - all calendars ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync - alle Kalender ( direktes Kx/Pi mit Kx/Pi syncen )" }, | ||
1577 | { "Pi-Sync - selected calendars ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync - ausgewählte Kalender ( direktes Kx/Pi mit Kx/Pi syncen )" }, | ||
1578 | { "","" }, | ||
1574 | { "","" }, | 1579 | { "","" }, |
1575 | { "","" }, | 1580 | { "","" }, |
1576 | { "","" }, | 1581 | { "","" }, |
1577 | { "","" }, | 1582 | { "","" }, |
1578 | { "","" }, | 1583 | { "","" }, |
1579 | { "","" }, | 1584 | { "","" }, |
1580 | { "","" }, | 1585 | { "","" }, |
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp index 92e5a0f..21f220c 100644 --- a/korganizer/koeditorgeneral.cpp +++ b/korganizer/koeditorgeneral.cpp | |||
@@ -1,624 +1,625 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qwidget.h> | 24 | #include <qwidget.h> |
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qlayout.h> | 26 | #include <qlayout.h> |
27 | #include <qvbox.h> | 27 | #include <qvbox.h> |
28 | #include <qbuttongroup.h> | 28 | #include <qbuttongroup.h> |
29 | #include <qvgroupbox.h> | 29 | #include <qvgroupbox.h> |
30 | #include <qwidgetstack.h> | 30 | #include <qwidgetstack.h> |
31 | #include <qdatetime.h> | 31 | #include <qdatetime.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qfile.h> | 33 | #include <qfile.h> |
34 | #include <qregexp.h> | 34 | #include <qregexp.h> |
35 | 35 | ||
36 | 36 | ||
37 | #include <kglobal.h> | 37 | #include <kglobal.h> |
38 | #include <kdialog.h> | 38 | #include <kdialog.h> |
39 | #include <kdebug.h> | 39 | #include <kdebug.h> |
40 | #include <klocale.h> | 40 | #include <klocale.h> |
41 | #include <kiconloader.h> | 41 | #include <kiconloader.h> |
42 | #include <kmessagebox.h> | 42 | #include <kmessagebox.h> |
43 | #include <kfiledialog.h> | 43 | #include <kfiledialog.h> |
44 | #include <kstandarddirs.h> | 44 | #include <kstandarddirs.h> |
45 | 45 | ||
46 | #include <libkcal/todo.h> | 46 | #include <libkcal/todo.h> |
47 | #include <libkcal/event.h> | 47 | #include <libkcal/event.h> |
48 | #include <libkdepim/categoryselectdialog.h> | 48 | #include <libkdepim/categoryselectdialog.h> |
49 | #include <libkdepim/kdateedit.h> | 49 | #include <libkdepim/kdateedit.h> |
50 | 50 | ||
51 | #include "koprefs.h" | 51 | #include "koprefs.h" |
52 | #include "koglobals.h" | 52 | #include "koglobals.h" |
53 | 53 | ||
54 | #include "koeditorgeneral.h" | 54 | #include "koeditorgeneral.h" |
55 | #include "kolocationbox.h" | 55 | #include "kolocationbox.h" |
56 | #ifndef DESKTOP_VERSION | 56 | #ifndef DESKTOP_VERSION |
57 | #include <qpe/qpeapplication.h> | 57 | #include <qpe/qpeapplication.h> |
58 | #else | 58 | #else |
59 | #include <qapplication.h> | 59 | #include <qapplication.h> |
60 | #endif | 60 | #endif |
61 | 61 | ||
62 | KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) : | 62 | KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) : |
63 | QObject( parent, name) | 63 | QObject( parent, name) |
64 | { | 64 | { |
65 | mNextFocus = 0; | 65 | mNextFocus = 0; |
66 | } | 66 | } |
67 | 67 | ||
68 | KOEditorGeneral::~KOEditorGeneral() | 68 | KOEditorGeneral::~KOEditorGeneral() |
69 | { | 69 | { |
70 | } | 70 | } |
71 | 71 | ||
72 | void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) | 72 | void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) |
73 | { | 73 | { |
74 | QGridLayout *headerLayout = new QGridLayout(topLayout); | 74 | QGridLayout *headerLayout = new QGridLayout(topLayout); |
75 | 75 | ||
76 | #if 0 | 76 | #if 0 |
77 | mOwnerLabel = new QLabel(i18n("Owner:"),parent); | 77 | mOwnerLabel = new QLabel(i18n("Owner:"),parent); |
78 | headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); | 78 | headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); |
79 | #endif | 79 | #endif |
80 | // 1 on pda | 80 | // 1 on pda |
81 | // 11 on desktop | 81 | // 11 on desktop |
82 | headerLayout->setSpacing( (KDialog::spacingHint()-3)*2+1 ); | 82 | headerLayout->setSpacing( (KDialog::spacingHint()-3)*2+1 ); |
83 | QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); | 83 | QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); |
84 | headerLayout->addWidget(summaryLabel,0,0); | 84 | headerLayout->addWidget(summaryLabel,0,0); |
85 | 85 | ||
86 | mSummaryEdit = new KOLocationBox(TRUE,parent, 50); | 86 | mSummaryEdit = new KOLocationBox(TRUE,parent, 50); |
87 | mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); | 87 | mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); |
88 | //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); | 88 | //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); |
89 | //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); | 89 | //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); |
90 | int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; | 90 | int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; |
91 | if ( QApplication::desktop()->width() > 320 ) | 91 | if ( QApplication::desktop()->width() > 320 ) |
92 | mSummaryEdit->setMaximumHeight( hei +6 ); | 92 | mSummaryEdit->setMaximumHeight( hei +6 ); |
93 | //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); | 93 | //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); |
94 | // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } | 94 | // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } |
95 | // mSummaryEdit = new QLineEdit(parent); | 95 | // mSummaryEdit = new QLineEdit(parent); |
96 | if ( QApplication::desktop()->height() < 320 ) | 96 | if ( QApplication::desktop()->height() < 320 ) |
97 | headerLayout->addWidget(mSummaryEdit,0,1); | 97 | headerLayout->addWidget(mSummaryEdit,0,1); |
98 | else | 98 | else |
99 | headerLayout->addMultiCellWidget(mSummaryEdit,0,0,1,2); | 99 | headerLayout->addMultiCellWidget(mSummaryEdit,0,0,1,2); |
100 | connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); | 100 | connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); |
101 | 101 | ||
102 | QLabel *locationLabel = new QLabel(i18n("Location:"),parent); | 102 | QLabel *locationLabel = new QLabel(i18n("Location:"),parent); |
103 | if ( QApplication::desktop()->height() < 320 ) | 103 | if ( QApplication::desktop()->height() < 320 ) |
104 | headerLayout->addWidget(locationLabel,0,2); | 104 | headerLayout->addWidget(locationLabel,0,2); |
105 | else | 105 | else |
106 | headerLayout->addWidget(locationLabel,1,0); | 106 | headerLayout->addWidget(locationLabel,1,0); |
107 | 107 | ||
108 | mLocationEdit = new KOLocationBox(TRUE,parent,30); | 108 | mLocationEdit = new KOLocationBox(TRUE,parent,30); |
109 | mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); | 109 | mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); |
110 | if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->height() > 240 ) | 110 | if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->height() > 240 ) |
111 | mLocationEdit->setMaximumHeight( hei + 6); | 111 | mLocationEdit->setMaximumHeight( hei + 6); |
112 | 112 | ||
113 | // mLocationEdit = new QLineEdit(parent); | 113 | // mLocationEdit = new QLineEdit(parent); |
114 | connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); | 114 | connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); |
115 | 115 | ||
116 | mCalendarBox = new QComboBox ( parent ); | 116 | mCalendarBox = new QComboBox ( parent ); |
117 | mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); | 117 | mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); |
118 | if ( QApplication::desktop()->height() < 320 ) { | 118 | if ( QApplication::desktop()->height() < 320 ) { |
119 | headerLayout->addWidget(mLocationEdit,0,3); | 119 | headerLayout->addWidget(mLocationEdit,0,3); |
120 | headerLayout->addWidget(mCalendarBox,0,4); | 120 | headerLayout->addWidget(mCalendarBox,0,4); |
121 | headerLayout->setColStretch( 1, 10); | 121 | headerLayout->setColStretch( 1, 10); |
122 | headerLayout->setColStretch( 3, 10); | 122 | headerLayout->setColStretch( 3, 10); |
123 | mCalendarBox->setMaximumWidth( 64 ); | 123 | mCalendarBox->setMaximumWidth( 64 ); |
124 | } | 124 | } |
125 | else { | 125 | else { |
126 | headerLayout->addWidget(mLocationEdit,1,1); | 126 | headerLayout->addWidget(mLocationEdit,1,1); |
127 | headerLayout->addWidget(mCalendarBox,1,2); | 127 | headerLayout->addWidget(mCalendarBox,1,2); |
128 | int str = 3; | 128 | int str = 3; |
129 | if ( QApplication::desktop()->width() < 640 ) { | 129 | if ( QApplication::desktop()->width() < 640 ) { |
130 | --str; | 130 | --str; |
131 | if ( QApplication::desktop()->width() < 320 ) | 131 | if ( QApplication::desktop()->width() < 320 ) |
132 | --str; | 132 | --str; |
133 | } | 133 | } |
134 | headerLayout->setColStretch( 1, str); | 134 | headerLayout->setColStretch( 1, str); |
135 | headerLayout->setColStretch( 2, 1); | 135 | headerLayout->setColStretch( 2, 1); |
136 | } | 136 | } |
137 | 137 | ||
138 | } | 138 | } |
139 | void KOEditorGeneral::setFocusOn( int i ) | 139 | void KOEditorGeneral::setFocusOn( int i ) |
140 | { | 140 | { |
141 | mNextFocus = i; | 141 | mNextFocus = i; |
142 | QTimer::singleShot( 0, this, SLOT ( slotSetFocusOn() )); | 142 | QTimer::singleShot( 0, this, SLOT ( slotSetFocusOn() )); |
143 | } | 143 | } |
144 | void KOEditorGeneral::slotSetFocusOn() | 144 | void KOEditorGeneral::slotSetFocusOn() |
145 | { | 145 | { |
146 | mNextFocus; | ||
147 | if ( mNextFocus == 1 ) { | 146 | if ( mNextFocus == 1 ) { |
148 | mDescriptionEdit->setFocus(); | 147 | mDescriptionEdit->setFocus(); |
149 | mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); | 148 | mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); |
150 | } | 149 | } |
151 | if ( mNextFocus == 2 ) { | 150 | if ( mNextFocus == 2 ) { |
152 | mSummaryEdit->setFocus(); | 151 | mSummaryEdit->setFocus(); |
153 | } | 152 | } |
154 | } | 153 | } |
155 | void KOEditorGeneral::editCategories() | 154 | void KOEditorGeneral::editCategories() |
156 | { | 155 | { |
157 | // qDebug("KOEditorGeneral::editCategories() "); | 156 | // qDebug("KOEditorGeneral::editCategories() "); |
158 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); | 157 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); |
159 | connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &))); | 158 | connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &))); |
160 | //KOGlobals::fitDialogToScreen( csd ); | 159 | //KOGlobals::fitDialogToScreen( csd ); |
161 | csd->setColorEnabled(); | 160 | csd->setColorEnabled(); |
162 | csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) ); | 161 | csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) ); |
163 | csd->exec(); | 162 | csd->exec(); |
164 | delete csd; | 163 | delete csd; |
165 | } | 164 | } |
166 | 165 | ||
167 | void KOEditorGeneral::showCatPopup() | 166 | void KOEditorGeneral::showCatPopup() |
168 | { | 167 | { |
169 | mCatPopup->clear(); | 168 | mCatPopup->clear(); |
170 | QStringList checkedCategories = QStringList::split (",", mCategoriesLabel->text()); | 169 | QStringList checkedCategories = QStringList::split (",", mCategoriesLabel->text()); |
171 | int index = 0; | 170 | int index = 0; |
172 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); | 171 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); |
173 | it != KOPrefs::instance()->mCustomCategories.end (); | 172 | it != KOPrefs::instance()->mCustomCategories.end (); |
174 | ++it) { | 173 | ++it) { |
175 | mCatPopup->insertItem (*it, index ); | 174 | mCatPopup->insertItem (*it, index ); |
176 | //mCategory[index] = *it; | 175 | //mCategory[index] = *it; |
177 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCatPopup->setItemChecked (index, true); | 176 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCatPopup->setItemChecked (index, true); |
178 | ++index; | 177 | ++index; |
179 | } | 178 | } |
180 | } | 179 | } |
181 | void KOEditorGeneral::selectedCatPopup( int index ) | 180 | void KOEditorGeneral::selectedCatPopup( int index ) |
182 | { | 181 | { |
183 | QStringList categories = QStringList::split (",", mCategoriesLabel->text()); | 182 | QStringList categories = QStringList::split (",", mCategoriesLabel->text()); |
184 | QString colcat = categories.first(); | 183 | QString colcat = categories.first(); |
185 | if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) | 184 | if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) |
186 | categories.remove (KOPrefs::instance()->mCustomCategories[index]); | 185 | categories.remove (KOPrefs::instance()->mCustomCategories[index]); |
187 | else | 186 | else |
188 | categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); | 187 | categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); |
189 | categories.sort (); | 188 | categories.sort (); |
190 | if ( !colcat.isEmpty() ) { | 189 | if ( !colcat.isEmpty() ) { |
191 | if ( categories.find ( colcat ) != categories.end () ) { | 190 | if ( categories.find ( colcat ) != categories.end () ) { |
192 | categories.remove( colcat ); | 191 | categories.remove( colcat ); |
193 | categories.prepend( colcat ); | 192 | categories.prepend( colcat ); |
194 | } | 193 | } |
195 | } | 194 | } |
196 | setCategories( categories.join(",") ); | 195 | setCategories( categories.join(",") ); |
197 | } | 196 | } |
198 | 197 | ||
199 | void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) | 198 | void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) |
200 | { | 199 | { |
201 | QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); | 200 | QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); |
202 | mCatPopup = new QPopupMenu ( parent ); | 201 | mCatPopup = new QPopupMenu ( parent ); |
203 | mCatPopup->setCheckable (true); | 202 | mCatPopup->setCheckable (true); |
204 | connect(mCatPopup,SIGNAL(aboutToShow () ), this ,SLOT(showCatPopup())); | 203 | connect(mCatPopup,SIGNAL(aboutToShow () ), this ,SLOT(showCatPopup())); |
205 | connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT(selectedCatPopup( int ))); | 204 | connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT(selectedCatPopup( int ))); |
206 | mCategoriesButton = new QPushButton(parent); | 205 | mCategoriesButton = new QPushButton(parent); |
207 | mCategoriesButton->setText(i18n("Categories...")); | 206 | mCategoriesButton->setText(i18n("Categories...")); |
208 | connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); | 207 | connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); |
209 | //connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); | 208 | //connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); |
210 | categoriesLayout->addWidget(mCategoriesButton); | 209 | categoriesLayout->addWidget(mCategoriesButton); |
211 | mCategoriesLabel = new QPushButton(parent);//new QLabel(parent); | 210 | mCategoriesLabel = new QPushButton(parent);//new QLabel(parent); |
212 | mCategoriesLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::Fixed ,FALSE) ); | 211 | mCategoriesLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::Fixed ,FALSE) ); |
213 | mCategoriesLabel->setPopup( mCatPopup ); | 212 | mCategoriesLabel->setPopup( mCatPopup ); |
214 | //mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); | 213 | //mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); |
215 | categoriesLayout->addWidget(mCategoriesLabel,1); | 214 | categoriesLayout->addWidget(mCategoriesLabel,1); |
216 | } | 215 | } |
217 | 216 | ||
218 | void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout) | 217 | void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout) |
219 | { | 218 | { |
220 | QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout ); | 219 | QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout ); |
221 | 220 | ||
222 | QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent); | 221 | QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent); |
223 | mCancelBox = new QCheckBox ( i18n("Cancelled"), parent); | 222 | mCancelBox = new QCheckBox ( i18n("Cancelled"), parent); |
224 | secrecyLayout->addWidget(mCancelBox); | 223 | secrecyLayout->addWidget(mCancelBox); |
225 | secrecyLayout->addWidget(secrecyLabel); | 224 | secrecyLayout->addWidget(secrecyLabel); |
226 | 225 | ||
227 | mSecrecyCombo = new QComboBox(parent); | 226 | mSecrecyCombo = new QComboBox(parent); |
228 | mSecrecyCombo->insertStringList(Incidence::secrecyList()); | 227 | mSecrecyCombo->insertStringList(Incidence::secrecyList()); |
229 | secrecyLayout->addWidget(mSecrecyCombo); | 228 | secrecyLayout->addWidget(mSecrecyCombo); |
230 | } | 229 | } |
231 | 230 | ||
232 | void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout) | 231 | void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout) |
233 | { | 232 | { |
234 | mDescriptionEdit = new KTextEdit(parent); | 233 | mDescriptionEdit = new KTextEdit(parent); |
235 | mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont ); | 234 | mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont ); |
236 | mDescriptionEdit->append(""); | 235 | mDescriptionEdit->append(""); |
237 | mDescriptionEdit->setReadOnly(false); | 236 | mDescriptionEdit->setReadOnly(false); |
238 | mDescriptionEdit->setOverwriteMode(false); | 237 | mDescriptionEdit->setOverwriteMode(false); |
239 | mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth ); | 238 | mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth ); |
240 | topLayout->addWidget(mDescriptionEdit); | 239 | topLayout->addWidget(mDescriptionEdit); |
241 | #ifndef DESKTOP_VERSION | 240 | #ifndef DESKTOP_VERSION |
242 | QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold ); | 241 | QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold ); |
243 | #endif | 242 | #endif |
244 | 243 | ||
245 | } | 244 | } |
246 | 245 | ||
247 | void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) | 246 | void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) |
248 | { | 247 | { |
249 | QBoxLayout *alarmLayout = new QHBoxLayout(topLayout); | 248 | QBoxLayout *alarmLayout = new QHBoxLayout(topLayout); |
250 | 249 | ||
251 | //mAlarmBell = new QLabel(parent); | 250 | //mAlarmBell = new QLabel(parent); |
252 | //mAlarmBell->setPixmap(SmallIcon("bell")); | 251 | //mAlarmBell->setPixmap(SmallIcon("bell")); |
253 | //alarmLayout->addWidget(mAlarmBell); | 252 | //alarmLayout->addWidget(mAlarmBell); |
254 | if ( QApplication::desktop()->width() < 320 ) | 253 | if ( QApplication::desktop()->width() < 320 ) |
255 | mAlarmButton = new QCheckBox(i18n("Rem."),parent); | 254 | mAlarmButton = new QCheckBox(i18n("Rem."),parent); |
256 | else | 255 | else |
257 | mAlarmButton = new QCheckBox(i18n("Reminder:"),parent); | 256 | mAlarmButton = new QCheckBox(i18n("Reminder:"),parent); |
258 | 257 | ||
259 | connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool))); | 258 | connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool))); |
260 | alarmLayout->addWidget(mAlarmButton); | 259 | alarmLayout->addWidget(mAlarmButton); |
261 | 260 | ||
262 | mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; | 261 | mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; |
263 | mAlarmTimeEdit->setButtonSymbols( QSpinBox::PlusMinus ); | 262 | mAlarmTimeEdit->setButtonSymbols( QSpinBox::PlusMinus ); |
264 | alarmLayout->addWidget(mAlarmTimeEdit); | 263 | alarmLayout->addWidget(mAlarmTimeEdit); |
265 | mAlarmIncrCombo = new QComboBox(false, parent); | 264 | mAlarmIncrCombo = new QComboBox(false, parent); |
266 | if ( QApplication::desktop()->width() < 320 ) { | 265 | if ( QApplication::desktop()->width() < 320 ) { |
267 | mAlarmIncrCombo->insertItem(i18n("min")); | 266 | mAlarmIncrCombo->insertItem(i18n("min")); |
268 | mAlarmIncrCombo->insertItem(i18n("hou")); | 267 | mAlarmIncrCombo->insertItem(i18n("hou")); |
269 | mAlarmIncrCombo->insertItem(i18n("day")); | 268 | mAlarmIncrCombo->insertItem(i18n("day")); |
270 | mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); | 269 | mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); |
271 | mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); | 270 | mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); |
272 | } else { | 271 | } else { |
273 | mAlarmIncrCombo->insertItem(i18n("minute(s)")); | 272 | mAlarmIncrCombo->insertItem(i18n("minute(s)")); |
274 | mAlarmIncrCombo->insertItem(i18n("hour(s)")); | 273 | mAlarmIncrCombo->insertItem(i18n("hour(s)")); |
275 | mAlarmIncrCombo->insertItem(i18n("day(s)")); | 274 | mAlarmIncrCombo->insertItem(i18n("day(s)")); |
276 | } | 275 | } |
277 | 276 | ||
278 | // mAlarmIncrCombo->setMinimumHeight(20); | 277 | // mAlarmIncrCombo->setMinimumHeight(20); |
279 | alarmLayout->addWidget(mAlarmIncrCombo); | 278 | alarmLayout->addWidget(mAlarmIncrCombo); |
280 | mAlarmSoundButton = new QPushButton(parent); | 279 | mAlarmSoundButton = new QPushButton(parent); |
281 | mAlarmSoundButton->setPixmap(SmallIcon("playsound")); | 280 | mAlarmSoundButton->setPixmap(SmallIcon("playsound")); |
282 | mAlarmSoundButton->setToggleButton(true); | 281 | mAlarmSoundButton->setToggleButton(true); |
283 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); | 282 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); |
284 | connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); | 283 | connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); |
285 | alarmLayout->addWidget(mAlarmSoundButton); | 284 | alarmLayout->addWidget(mAlarmSoundButton); |
286 | 285 | ||
287 | mAlarmProgramButton = new QPushButton(parent); | 286 | mAlarmProgramButton = new QPushButton(parent); |
288 | mAlarmProgramButton->setPixmap(SmallIcon("run")); | 287 | mAlarmProgramButton->setPixmap(SmallIcon("run")); |
289 | mAlarmProgramButton->setToggleButton(true); | 288 | mAlarmProgramButton->setToggleButton(true); |
290 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); | 289 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); |
291 | connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); | 290 | connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); |
292 | alarmLayout->addWidget(mAlarmProgramButton); | 291 | alarmLayout->addWidget(mAlarmProgramButton); |
293 | mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); | 292 | mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); |
294 | mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); | 293 | mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); |
295 | // if ( KOPrefs::instance()->mCompactDialogs ) { | 294 | // if ( KOPrefs::instance()->mCompactDialogs ) { |
296 | // mAlarmSoundButton->hide(); | 295 | // mAlarmSoundButton->hide(); |
297 | // mAlarmProgramButton->hide(); | 296 | // mAlarmProgramButton->hide(); |
298 | // } | 297 | // } |
299 | } | 298 | } |
300 | 299 | ||
301 | void KOEditorGeneral::pickAlarmSound() | 300 | void KOEditorGeneral::pickAlarmSound() |
302 | { | 301 | { |
303 | 302 | ||
304 | //qDebug("KOEditorGeneral::pickAlarmSound() %d",mAlarmSoundButton->isOn() ); | 303 | //qDebug("KOEditorGeneral::pickAlarmSound() %d",mAlarmSoundButton->isOn() ); |
305 | 304 | ||
306 | bool oldState = mAlarmSoundButton->isOn(); | 305 | bool oldState = mAlarmSoundButton->isOn(); |
307 | 306 | ||
308 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, | 307 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, |
309 | i18n("*.wav|Wav Files"), 0)); | 308 | i18n("*.wav|Wav Files"), 0)); |
310 | if (!fileName.isEmpty()) { | 309 | if (!fileName.isEmpty()) { |
311 | mAlarmSound = fileName; | 310 | mAlarmSound = fileName; |
312 | QToolTip::remove(mAlarmSoundButton); | 311 | QToolTip::remove(mAlarmSoundButton); |
313 | QString dispStr = i18n("Playing '%1'").arg(fileName); | 312 | QString dispStr = i18n("Playing '%1'").arg(fileName); |
314 | QToolTip::add(mAlarmSoundButton, dispStr); | 313 | QToolTip::add(mAlarmSoundButton, dispStr); |
315 | mAlarmProgramButton->setOn(false); | 314 | mAlarmProgramButton->setOn(false); |
316 | mAlarmSoundButton->setOn(true); | 315 | mAlarmSoundButton->setOn(true); |
317 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); | 316 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); |
318 | } else { | 317 | } else { |
319 | mAlarmProgramButton->setOn(oldState); | 318 | mAlarmProgramButton->setOn(oldState); |
320 | mAlarmSoundButton->setOn(!oldState); | 319 | mAlarmSoundButton->setOn(!oldState); |
321 | 320 | ||
322 | 321 | ||
323 | } | 322 | } |
324 | 323 | ||
325 | if (mAlarmProgramButton->isOn()) | 324 | if (mAlarmProgramButton->isOn()) |
326 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); | 325 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); |
327 | if ( mAlarmSoundButton->isOn()) | 326 | if ( mAlarmSoundButton->isOn()) |
328 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); | 327 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); |
329 | 328 | ||
330 | } | 329 | } |
331 | 330 | ||
332 | void KOEditorGeneral::pickAlarmProgram() | 331 | void KOEditorGeneral::pickAlarmProgram() |
333 | { | 332 | { |
334 | bool oldState = mAlarmProgramButton->isOn(); | 333 | bool oldState = mAlarmProgramButton->isOn(); |
335 | 334 | ||
336 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm: ") , 0)); | 335 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm: ") , 0)); |
337 | if (!fileName.isEmpty()) { | 336 | if (!fileName.isEmpty()) { |
338 | mAlarmProgram = fileName; | 337 | mAlarmProgram = fileName; |
339 | QToolTip::remove(mAlarmProgramButton); | 338 | QToolTip::remove(mAlarmProgramButton); |
340 | QString dispStr = i18n("Running '%1'").arg(fileName); | 339 | QString dispStr = i18n("Running '%1'").arg(fileName); |
341 | QToolTip::add(mAlarmProgramButton, dispStr); | 340 | QToolTip::add(mAlarmProgramButton, dispStr); |
342 | mAlarmSoundButton->setOn(false); | 341 | mAlarmSoundButton->setOn(false); |
343 | mAlarmProgramButton->setOn(true); | 342 | mAlarmProgramButton->setOn(true); |
344 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); | 343 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); |
345 | } else { | 344 | } else { |
346 | mAlarmProgramButton->setOn(!oldState); | 345 | mAlarmProgramButton->setOn(!oldState); |
347 | mAlarmSoundButton->setOn(oldState); | 346 | mAlarmSoundButton->setOn(oldState); |
348 | } | 347 | } |
349 | 348 | ||
350 | if (mAlarmProgramButton->isOn()) | 349 | if (mAlarmProgramButton->isOn()) |
351 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); | 350 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); |
352 | if ( mAlarmSoundButton->isOn()) | 351 | if ( mAlarmSoundButton->isOn()) |
353 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); | 352 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); |
354 | 353 | ||
355 | } | 354 | } |
356 | 355 | ||
357 | 356 | ||
358 | QString KOEditorGeneral::getFittingPath( const QString s ) | 357 | QString KOEditorGeneral::getFittingPath( const QString & s ) |
359 | { | 358 | { |
360 | int maxlen = 50; | 359 | int maxlen = 50; |
361 | if ( QApplication::desktop()->width() < 640 ) { | 360 | if ( QApplication::desktop()->width() < 640 ) { |
362 | if ( QApplication::desktop()->width() < 320 ) | 361 | if ( QApplication::desktop()->width() < 320 ) |
363 | maxlen = 22; | 362 | maxlen = 22; |
364 | else | 363 | else |
365 | maxlen = 35; | 364 | maxlen = 35; |
366 | } | 365 | } |
367 | if ( s.length() > maxlen ) { | 366 | if ( s.length() > maxlen ) { |
368 | return "..."+s.right(maxlen -3); | 367 | return "..."+s.right(maxlen -3); |
369 | } | 368 | } |
370 | return s; | 369 | return s; |
371 | } | 370 | } |
372 | 371 | ||
373 | void KOEditorGeneral::enableAlarmEdit(bool enable) | 372 | void KOEditorGeneral::enableAlarmEdit(bool enable) |
374 | { | 373 | { |
375 | if ( enable ) { | 374 | if ( enable ) { |
376 | if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { | 375 | if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { |
377 | mAlarmSoundButton->setOn( true ); | 376 | mAlarmSoundButton->setOn( true ); |
378 | if ( mAlarmSound.isEmpty() ) | 377 | if ( mAlarmSound.isEmpty() ) |
379 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 378 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
380 | else { | 379 | else { |
381 | if ( ! QFile::exists( mAlarmSound ) ) | 380 | if ( ! QFile::exists( mAlarmSound ) ) |
382 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 381 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
383 | } | 382 | } |
384 | } | 383 | } |
385 | } | 384 | } |
386 | ((QWidget*)parent())->topLevelWidget()->setCaption(mAlarmMessage); | 385 | ((QWidget*)parent())->topLevelWidget()->setCaption(mAlarmMessage); |
387 | mAlarmTimeEdit->setEnabled(enable); | 386 | mAlarmTimeEdit->setEnabled(enable); |
388 | mAlarmSoundButton->setEnabled(enable); | 387 | mAlarmSoundButton->setEnabled(enable); |
389 | mAlarmProgramButton->setEnabled(enable); | 388 | mAlarmProgramButton->setEnabled(enable); |
390 | mAlarmIncrCombo->setEnabled(enable); | 389 | mAlarmIncrCombo->setEnabled(enable); |
391 | } | 390 | } |
392 | 391 | ||
393 | void KOEditorGeneral::disableAlarmEdit(bool disable) | 392 | void KOEditorGeneral::disableAlarmEdit(bool disable) |
394 | { | 393 | { |
395 | enableAlarmEdit( !disable ); | 394 | enableAlarmEdit( !disable ); |
396 | } | 395 | } |
397 | 396 | ||
398 | void KOEditorGeneral::enableAlarm( bool enable ) | 397 | void KOEditorGeneral::enableAlarm( bool enable ) |
399 | { | 398 | { |
400 | enableAlarmEdit( enable ); | 399 | enableAlarmEdit( enable ); |
401 | } | 400 | } |
402 | 401 | ||
403 | void KOEditorGeneral::alarmDisable(bool disable) | 402 | void KOEditorGeneral::alarmDisable(bool disable) |
404 | { | 403 | { |
405 | if (!disable) { | 404 | if (!disable) { |
406 | //mAlarmBell->setEnabled(true); | 405 | //mAlarmBell->setEnabled(true); |
407 | mAlarmButton->setEnabled(true); | 406 | mAlarmButton->setEnabled(true); |
408 | } else { | 407 | } else { |
409 | //mAlarmBell->setEnabled(false); | 408 | //mAlarmBell->setEnabled(false); |
410 | mAlarmButton->setEnabled(false); | 409 | mAlarmButton->setEnabled(false); |
411 | mAlarmButton->setChecked(false); | 410 | mAlarmButton->setChecked(false); |
412 | mAlarmTimeEdit->setEnabled(false); | 411 | mAlarmTimeEdit->setEnabled(false); |
413 | mAlarmSoundButton->setEnabled(false); | 412 | mAlarmSoundButton->setEnabled(false); |
414 | mAlarmProgramButton->setEnabled(false); | 413 | mAlarmProgramButton->setEnabled(false); |
415 | mAlarmIncrCombo->setEnabled(false); | 414 | mAlarmIncrCombo->setEnabled(false); |
416 | } | 415 | } |
417 | } | 416 | } |
418 | 417 | ||
419 | void KOEditorGeneral::setCategories(const QString &str) | 418 | void KOEditorGeneral::setCategories(const QString &str) |
420 | { | 419 | { |
421 | QString tt = str; | 420 | QString tt = str; |
422 | QToolTip::add( mCategoriesLabel, i18n("<b>Click here to edit categories: </b>") +"<em>"+tt.replace( QRegExp(","),", ")+"</em>"); | 421 | QToolTip::add( mCategoriesLabel, i18n("<b>Click here to edit categories: </b>") +"<em>"+tt.replace( QRegExp(","),", ")+"</em>"); |
423 | mCategoriesLabel->setText(str); | 422 | mCategoriesLabel->setText(str); |
424 | } | 423 | } |
425 | 424 | ||
426 | void KOEditorGeneral::setDefaults(bool allDay) | 425 | void KOEditorGeneral::setDefaults(bool allDay) |
427 | { | 426 | { |
428 | #if 0 | 427 | #if 0 |
429 | mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); | 428 | mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); |
430 | #endif | 429 | #endif |
431 | 430 | ||
432 | mAlarmMessage = i18n("Edit new item"); | 431 | mAlarmMessage = i18n("Edit new item"); |
433 | enableAlarmEdit( !allDay ); | 432 | enableAlarmEdit( !allDay ); |
434 | 433 | ||
435 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. | 434 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. |
436 | int alarmTime; | 435 | int alarmTime; |
437 | int a[] = { 1,5,10,15,30,60,180, 1440 }; | 436 | int a[] = { 1,5,10,15,30,60,180, 1440 }; |
438 | int index = KOPrefs::instance()->mAlarmTime; | 437 | int index = KOPrefs::instance()->mAlarmTime; |
439 | if (index < 0 || index > 7) { | 438 | if (index < 0 || index > 7) { |
440 | alarmTime = 15; | 439 | alarmTime = 15; |
441 | } else { | 440 | } else { |
442 | alarmTime = a[index]; | 441 | alarmTime = a[index]; |
443 | } | 442 | } |
444 | mAlarmButton ->setChecked( false ); | 443 | mAlarmButton ->setChecked( false ); |
445 | mAlarmTimeEdit->setValue(alarmTime); | 444 | mAlarmTimeEdit->setValue(alarmTime); |
446 | mAlarmIncrCombo->setCurrentItem(0); | 445 | mAlarmIncrCombo->setCurrentItem(0); |
447 | enableAlarmEdit( false ); | 446 | enableAlarmEdit( false ); |
448 | //alarmDisable (false); | 447 | //alarmDisable (false); |
449 | mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); | 448 | mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); |
450 | mCancelBox->setChecked( false ); | 449 | mCancelBox->setChecked( false ); |
451 | mSummaryEdit->setEditText(""); | 450 | mSummaryEdit->setEditText(""); |
452 | mLocationEdit->setEditText(""); | 451 | mLocationEdit->setEditText(""); |
453 | mDescriptionEdit->setText(""); | 452 | mDescriptionEdit->setText(""); |
454 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 453 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
455 | setCategories(""); | 454 | setCategories(""); |
456 | fillCalCombo(); | 455 | fillCalCombo(); |
457 | } | 456 | } |
458 | void KOEditorGeneral::setSecrecy( int num ) | 457 | void KOEditorGeneral::setSecrecy( int num ) |
459 | { | 458 | { |
460 | mSecrecyCombo->setCurrentItem(num); | 459 | mSecrecyCombo->setCurrentItem(num); |
461 | } | 460 | } |
462 | void KOEditorGeneral::fillCalCombo( int setToID ) | 461 | void KOEditorGeneral::fillCalCombo( int setToID ) |
463 | { | 462 | { |
464 | mCalendarBox->clear(); | 463 | mCalendarBox->clear(); |
465 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); | 464 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); |
466 | int std = 0; | 465 | int std = 0; |
467 | int count = 0; | 466 | int count = 0; |
468 | while ( kkf ) { | 467 | while ( kkf ) { |
469 | if ( !kkf->mErrorOnLoad &&! kkf->isReadOnly ) { | 468 | if ( !kkf->mErrorOnLoad &&! kkf->isReadOnly ) { |
470 | if ( setToID ) { | 469 | if ( setToID ) { |
471 | if ( kkf->mCalNumber == setToID ) | 470 | if ( kkf->mCalNumber == setToID ) |
472 | std = count; | 471 | std = count; |
473 | } else { | 472 | } else { |
474 | if ( kkf->isStandard ) { | 473 | if ( kkf->isStandard ) { |
475 | std = count; | 474 | std = count; |
476 | } | 475 | } |
477 | } | 476 | } |
478 | ++count; | 477 | ++count; |
479 | mCalendarBox->insertItem( kkf->mName ); | 478 | mCalendarBox->insertItem( kkf->mName ); |
480 | } | 479 | } |
481 | kkf = KOPrefs::instance()->mCalendars.next(); | 480 | kkf = KOPrefs::instance()->mCalendars.next(); |
482 | } | 481 | } |
483 | mCalendarBox->setCurrentItem( std ); | 482 | mCalendarBox->setCurrentItem( std ); |
484 | if ( KOPrefs::instance()->mCalendars.count() == 1 ) | 483 | if ( KOPrefs::instance()->mCalendars.count() == 1 ) |
485 | mCalendarBox->hide(); | 484 | mCalendarBox->hide(); |
486 | else | 485 | else |
487 | mCalendarBox->show(); | 486 | mCalendarBox->show(); |
488 | 487 | ||
489 | } | 488 | } |
490 | int KOEditorGeneral::getCalendarID() | 489 | int KOEditorGeneral::getCalendarID() |
491 | { | 490 | { |
492 | return KOPrefs::instance()->getCalendarID( mCalendarBox->currentText() ); | 491 | return KOPrefs::instance()->getCalendarID( mCalendarBox->currentText() ); |
493 | } | 492 | } |
494 | 493 | ||
495 | void KOEditorGeneral::readIncidence(Incidence *event) | 494 | void KOEditorGeneral::readIncidence(Incidence *event) |
496 | { | 495 | { |
497 | fillCalCombo( event->calID() ); | 496 | fillCalCombo( event->calID() ); |
498 | mAlarmMessage = event->summary(); | 497 | mAlarmMessage = event->summary(); |
499 | if ( ! event->location().isEmpty() ) | 498 | if ( ! event->location().isEmpty() ) |
500 | mAlarmMessage += " ("+event->location()+")"; | 499 | mAlarmMessage += " ("+event->location()+")"; |
501 | mAlarmIncrCombo->setCurrentItem(0); | 500 | mAlarmIncrCombo->setCurrentItem(0); |
502 | mSummaryEdit->setEditText(event->summary()); | 501 | mSummaryEdit->setEditText(event->summary()); |
503 | mLocationEdit->setEditText(event->location()); | 502 | mLocationEdit->setEditText(event->location()); |
504 | mDescriptionEdit->setText(event->description()); | 503 | mDescriptionEdit->setText(event->description()); |
505 | 504 | ||
506 | #if 0 | 505 | #if 0 |
507 | // organizer information | 506 | // organizer information |
508 | mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); | 507 | mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); |
509 | #endif | 508 | #endif |
510 | 509 | ||
511 | enableAlarmEdit( event->isAlarmEnabled() ); | 510 | enableAlarmEdit( event->isAlarmEnabled() ); |
512 | //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); | 511 | //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); |
513 | if(!event->isAlarmEnabled()) { | 512 | if(!event->isAlarmEnabled()) { |
514 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. | 513 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. |
515 | int alarmTime; | 514 | int alarmTime; |
516 | int a[] = { 1,5,10,15,30,60,180, 1440 }; | 515 | int a[] = { 1,5,10,15,30,60,180, 1440 }; |
517 | int index = KOPrefs::instance()->mAlarmTime; | 516 | int index = KOPrefs::instance()->mAlarmTime; |
518 | if (index < 0 || index > 7) { | 517 | if (index < 0 || index > 7) { |
519 | alarmTime = 15; | 518 | alarmTime = 15; |
520 | } else { | 519 | } else { |
521 | alarmTime = a[index]; | 520 | alarmTime = a[index]; |
522 | } | 521 | } |
523 | mAlarmTimeEdit->setValue(alarmTime); | 522 | mAlarmTimeEdit->setValue(alarmTime); |
524 | } | 523 | } |
525 | mAlarmButton->setChecked( event->isAlarmEnabled() ); | 524 | mAlarmButton->setChecked( event->isAlarmEnabled() ); |
526 | mSecrecyCombo->setCurrentItem(event->secrecy()); | 525 | mSecrecyCombo->setCurrentItem(event->secrecy()); |
527 | mCancelBox->setChecked( event->cancelled() ); | 526 | mCancelBox->setChecked( event->cancelled() ); |
528 | mAlarmProgramButton->setOn(false); | 527 | mAlarmProgramButton->setOn(false); |
529 | mAlarmSoundButton->setOn(false); | 528 | mAlarmSoundButton->setOn(false); |
530 | 529 | ||
531 | // set up alarm stuff | 530 | // set up alarm stuff |
532 | QPtrList<Alarm> alarms = event->alarms(); | 531 | QPtrList<Alarm> alarms = event->alarms(); |
533 | Alarm* alarm; | 532 | Alarm* alarm; |
534 | mAlarmIncrCombo->setCurrentItem(0); | 533 | mAlarmIncrCombo->setCurrentItem(0); |
535 | for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) { | 534 | for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) { |
536 | int offset; | 535 | int offset; |
537 | if ( alarm->hasTime() ) { | 536 | if ( alarm->hasTime() ) { |
538 | QDateTime t = alarm->time(); | 537 | QDateTime t = alarm->time(); |
539 | offset = event->dtStart().secsTo( t ); | 538 | offset = event->dtStart().secsTo( t ); |
540 | } else { | 539 | } else { |
541 | offset = alarm->startOffset().asSeconds(); | 540 | offset = alarm->startOffset().asSeconds(); |
542 | } | 541 | } |
543 | if ( offset != 0 ) { | 542 | if ( offset != 0 ) { |
544 | offset = offset / -60; // make minutes | 543 | offset = offset / -60; // make minutes |
545 | if (offset % 60 == 0) { // divides evenly into hours? | 544 | if (offset % 60 == 0) { // divides evenly into hours? |
546 | offset = offset / 60; | 545 | offset = offset / 60; |
547 | mAlarmIncrCombo->setCurrentItem(1); | 546 | mAlarmIncrCombo->setCurrentItem(1); |
548 | if (offset % 24 == 0) { // divides evenly into days? | 547 | if (offset % 24 == 0) { // divides evenly into days? |
549 | offset = offset / 24; | 548 | offset = offset / 24; |
550 | mAlarmIncrCombo->setCurrentItem(2); | 549 | mAlarmIncrCombo->setCurrentItem(2); |
551 | } | 550 | } |
552 | } | 551 | } |
553 | } | 552 | } |
554 | mAlarmTimeEdit->setValue( offset ); | 553 | mAlarmTimeEdit->setValue( offset ); |
555 | if (alarm->type() == Alarm::Procedure) { | 554 | if (alarm->type() == Alarm::Procedure) { |
556 | 555 | ||
557 | mAlarmProgram = alarm->programFile(); | 556 | mAlarmProgram = alarm->programFile(); |
558 | mAlarmProgramButton->setOn(true); | 557 | mAlarmProgramButton->setOn(true); |
559 | QString dispStr = i18n("Running '%1'").arg(mAlarmProgram); | 558 | QString dispStr = i18n("Running '%1'").arg(mAlarmProgram); |
560 | QToolTip::add(mAlarmProgramButton, dispStr); | 559 | QToolTip::add(mAlarmProgramButton, dispStr); |
561 | } | 560 | } |
562 | else if (alarm->type() == Alarm::Audio) { | 561 | else if (alarm->type() == Alarm::Audio) { |
563 | mAlarmSound = alarm->audioFile(); | 562 | mAlarmSound = alarm->audioFile(); |
564 | if ( ! QFile::exists( mAlarmSound ) ) | 563 | if ( ! QFile::exists( mAlarmSound ) ) |
565 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 564 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
566 | mAlarmSoundButton->setOn(true); | 565 | mAlarmSoundButton->setOn(true); |
567 | QString dispStr = i18n("Playing '%1'").arg(mAlarmSound); | 566 | QString dispStr = i18n("Playing '%1'").arg(mAlarmSound); |
568 | QToolTip::add(mAlarmSoundButton, dispStr); | 567 | QToolTip::add(mAlarmSoundButton, dispStr); |
569 | } | 568 | } |
570 | mAlarmButton->setChecked(alarm->enabled()); | 569 | mAlarmButton->setChecked(alarm->enabled()); |
571 | enableAlarmEdit( alarm->enabled() ); | 570 | enableAlarmEdit( alarm->enabled() ); |
572 | //qDebug("nableAlarmEdit( alarm->enabled() )********* "); | 571 | //qDebug("nableAlarmEdit( alarm->enabled() )********* "); |
573 | // TODO: Deal with multiple alarms | 572 | // TODO: Deal with multiple alarms |
574 | break; // For now, stop after the first alarm | 573 | break; // For now, stop after the first alarm |
575 | } | 574 | } |
576 | 575 | ||
577 | setCategories(event->categoriesStr()); | 576 | setCategories(event->categoriesStr()); |
578 | } | 577 | } |
579 | 578 | ||
580 | void KOEditorGeneral::writeIncidence(Incidence *event) | 579 | void KOEditorGeneral::writeIncidence(Incidence *event) |
581 | { | 580 | { |
582 | // kdDebug() << "KOEditorGeneral::writeEvent()" << endl; | 581 | // kdDebug() << "KOEditorGeneral::writeEvent()" << endl; |
583 | mLocationEdit->save(KOLocationBox::LOCATION); | 582 | mLocationEdit->save(KOLocationBox::LOCATION); |
584 | event->setSummary(mSummaryEdit->currentText()); | 583 | event->setSummary(mSummaryEdit->currentText()); |
585 | event->setLocation(mLocationEdit->currentText()); | 584 | event->setLocation(mLocationEdit->currentText()); |
586 | event->setDescription(mDescriptionEdit->text()); | 585 | event->setDescription(mDescriptionEdit->text()); |
587 | event->setCategories(mCategoriesLabel->text()); | 586 | event->setCategories(mCategoriesLabel->text()); |
588 | event->setSecrecy(mSecrecyCombo->currentItem()); | 587 | event->setSecrecy(mSecrecyCombo->currentItem()); |
589 | event->setCancelled(mCancelBox->isChecked() );; | 588 | event->setCancelled(mCancelBox->isChecked() );; |
590 | // alarm stuff | 589 | // alarm stuff |
591 | if (mAlarmButton->isChecked()) { | 590 | if (mAlarmButton->isChecked()) { |
592 | if (event->alarms().count() == 0) | 591 | if (event->alarms().count() == 0) |
593 | event->newAlarm(); | 592 | event->newAlarm(); |
594 | QPtrList<Alarm> alarms = event->alarms(); | 593 | QPtrList<Alarm> alarms = event->alarms(); |
595 | Alarm *alarm; | 594 | Alarm *alarm; |
596 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { | 595 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { |
597 | alarm->setEnabled(true); | 596 | alarm->setEnabled(true); |
598 | int j = mAlarmTimeEdit->value()* -60; | 597 | int j = mAlarmTimeEdit->value()* -60; |
599 | if (mAlarmIncrCombo->currentItem() == 1) | 598 | if (mAlarmIncrCombo->currentItem() == 1) |
600 | j = j * 60; | 599 | j = j * 60; |
601 | else if (mAlarmIncrCombo->currentItem() == 2) | 600 | else if (mAlarmIncrCombo->currentItem() == 2) |
602 | j = j * (60 * 24); | 601 | j = j * (60 * 24); |
603 | alarm->setStartOffset( j ); | 602 | alarm->setStartOffset( j ); |
604 | 603 | ||
605 | if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) { | 604 | if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) { |
606 | alarm->setProcedureAlarm(mAlarmProgram); | 605 | alarm->setProcedureAlarm(mAlarmProgram); |
607 | } | 606 | } |
608 | else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) | 607 | else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) |
609 | alarm->setAudioAlarm(mAlarmSound); | 608 | alarm->setAudioAlarm(mAlarmSound); |
610 | else | 609 | else |
611 | alarm->setType(Alarm::Invalid); | 610 | alarm->setType(Alarm::Invalid); |
612 | //alarm->setAudioAlarm("default"); | 611 | //alarm->setAudioAlarm("default"); |
613 | // TODO: Deal with multiple alarms | 612 | // TODO: Deal with multiple alarms |
614 | break; // For now, stop after the first alarm | 613 | break; // For now, stop after the first alarm |
615 | } | 614 | } |
616 | } else { | 615 | } else { |
617 | Alarm* alarm = event->alarms().first(); | 616 | Alarm* alarm = event->alarms().first(); |
618 | if ( alarm ) { | 617 | if ( alarm ) { |
619 | alarm->setEnabled(false); | 618 | alarm->setEnabled(false); |
620 | alarm->setType(Alarm::Invalid); | 619 | alarm->setType(Alarm::Invalid); |
621 | } | 620 | } |
622 | } | 621 | } |
623 | event->setCalID( getCalendarID() ); | 622 | int id = getCalendarID(); |
623 | event->setCalID( id ); | ||
624 | event->setAlarmEnabled( KOPrefs::instance()->getCalendar( id )->isAlarmEnabled ); | ||
624 | } | 625 | } |
diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h index d8b15af..b10a5d4 100644 --- a/korganizer/koeditorgeneral.h +++ b/korganizer/koeditorgeneral.h | |||
@@ -1,125 +1,125 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | #ifndef KOEDITORGENERAL_H | 23 | #ifndef KOEDITORGENERAL_H |
24 | #define KOEDITORGENERAL_H | 24 | #define KOEDITORGENERAL_H |
25 | 25 | ||
26 | #include <qframe.h> | 26 | #include <qframe.h> |
27 | #include <qlabel.h> | 27 | #include <qlabel.h> |
28 | #include <qcheckbox.h> | 28 | #include <qcheckbox.h> |
29 | #include <qpushbutton.h> | 29 | #include <qpushbutton.h> |
30 | #include <qpopupmenu.h> | 30 | #include <qpopupmenu.h> |
31 | #include <qgroupbox.h> | 31 | #include <qgroupbox.h> |
32 | #include <qlineedit.h> | 32 | #include <qlineedit.h> |
33 | #include <qcombobox.h> | 33 | #include <qcombobox.h> |
34 | #include <qlistview.h> | 34 | #include <qlistview.h> |
35 | #include <qradiobutton.h> | 35 | #include <qradiobutton.h> |
36 | #include <qlayout.h> | 36 | #include <qlayout.h> |
37 | #include <qspinbox.h> | 37 | #include <qspinbox.h> |
38 | #include <qcombobox.h> | 38 | #include <qcombobox.h> |
39 | 39 | ||
40 | #include <ktextedit.h> | 40 | #include <ktextedit.h> |
41 | #include <krestrictedline.h> | 41 | #include <krestrictedline.h> |
42 | 42 | ||
43 | #include <libkcal/incidence.h> | 43 | #include <libkcal/incidence.h> |
44 | 44 | ||
45 | #include "ktimeedit.h" | 45 | #include "ktimeedit.h" |
46 | 46 | ||
47 | class KDateEdit; | 47 | class KDateEdit; |
48 | class KOLocationBox; | 48 | class KOLocationBox; |
49 | using namespace KCal; | 49 | using namespace KCal; |
50 | 50 | ||
51 | class KOEditorGeneral : public QObject | 51 | class KOEditorGeneral : public QObject |
52 | { | 52 | { |
53 | Q_OBJECT | 53 | Q_OBJECT |
54 | public: | 54 | public: |
55 | KOEditorGeneral (QObject* parent=0,const char* name=0); | 55 | KOEditorGeneral (QObject* parent=0,const char* name=0); |
56 | virtual ~KOEditorGeneral(); | 56 | virtual ~KOEditorGeneral(); |
57 | void setFocusOn( int i ); | 57 | void setFocusOn( int i ); |
58 | void initHeader(QWidget *,QBoxLayout *); | 58 | void initHeader(QWidget *,QBoxLayout *); |
59 | void initDescription(QWidget *,QBoxLayout *); | 59 | void initDescription(QWidget *,QBoxLayout *); |
60 | void initSecrecy(QWidget *,QBoxLayout *); | 60 | void initSecrecy(QWidget *,QBoxLayout *); |
61 | void initCategories(QWidget *,QBoxLayout *); | 61 | void initCategories(QWidget *,QBoxLayout *); |
62 | void initAlarm(QWidget *,QBoxLayout *); | 62 | void initAlarm(QWidget *,QBoxLayout *); |
63 | 63 | ||
64 | /** Set widgets to default values */ | 64 | /** Set widgets to default values */ |
65 | void setDefaults(bool allDay); | 65 | void setDefaults(bool allDay); |
66 | /** Read event object and setup widgets accordingly */ | 66 | /** Read event object and setup widgets accordingly */ |
67 | void readIncidence(Incidence *); | 67 | void readIncidence(Incidence *); |
68 | /** Write event settings to event object */ | 68 | /** Write event settings to event object */ |
69 | void writeIncidence(Incidence *); | 69 | void writeIncidence(Incidence *); |
70 | 70 | ||
71 | /** Check if the input is valid. */ | 71 | /** Check if the input is valid. */ |
72 | bool validateInput() { return true; } | 72 | bool validateInput() { return true; } |
73 | 73 | ||
74 | void enableAlarm( bool enable ); | 74 | void enableAlarm( bool enable ); |
75 | void setSecrecy( int num ); | 75 | void setSecrecy( int num ); |
76 | int getCalendarID(); | 76 | int getCalendarID(); |
77 | public slots: | 77 | public slots: |
78 | void setCategories(const QString &); | 78 | void setCategories(const QString &); |
79 | void editCategories(); | 79 | void editCategories(); |
80 | 80 | ||
81 | protected slots: | 81 | protected slots: |
82 | void enableAlarmEdit( bool enable ); | 82 | void enableAlarmEdit( bool enable ); |
83 | void disableAlarmEdit( bool disable ); | 83 | void disableAlarmEdit( bool disable ); |
84 | void alarmDisable( bool disable ); | 84 | void alarmDisable( bool disable ); |
85 | void pickAlarmSound(); | 85 | void pickAlarmSound(); |
86 | void pickAlarmProgram(); | 86 | void pickAlarmProgram(); |
87 | void slotSetFocusOn(); | 87 | void slotSetFocusOn(); |
88 | void showCatPopup(); | 88 | void showCatPopup(); |
89 | void selectedCatPopup( int ); | 89 | void selectedCatPopup( int ); |
90 | 90 | ||
91 | signals: | 91 | signals: |
92 | void openCategoryDialog(); | 92 | void openCategoryDialog(); |
93 | void allAccepted(); | 93 | void allAccepted(); |
94 | void dateTimesChanged(QDateTime,QDateTime); | 94 | void dateTimesChanged(QDateTime,QDateTime); |
95 | 95 | ||
96 | protected: | 96 | protected: |
97 | void fillCalCombo( int setToID = 0 ); | 97 | void fillCalCombo( int setToID = 0 ); |
98 | int mNextFocus; | 98 | int mNextFocus; |
99 | //QLineEdit *mSummaryEdit; | 99 | //QLineEdit *mSummaryEdit; |
100 | //QLineEdit *mLocationEdit; | 100 | //QLineEdit *mLocationEdit; |
101 | KOLocationBox *mSummaryEdit; | 101 | KOLocationBox *mSummaryEdit; |
102 | KOLocationBox *mLocationEdit; | 102 | KOLocationBox *mLocationEdit; |
103 | QComboBox *mCalendarBox; | 103 | QComboBox *mCalendarBox; |
104 | QLabel *mAlarmBell; | 104 | QLabel *mAlarmBell; |
105 | QCheckBox *mAlarmButton; | 105 | QCheckBox *mAlarmButton; |
106 | QSpinBox *mAlarmTimeEdit; | 106 | QSpinBox *mAlarmTimeEdit; |
107 | QPushButton *mAlarmSoundButton; | 107 | QPushButton *mAlarmSoundButton; |
108 | QPushButton *mAlarmProgramButton; | 108 | QPushButton *mAlarmProgramButton; |
109 | QComboBox *mAlarmIncrCombo; | 109 | QComboBox *mAlarmIncrCombo; |
110 | KTextEdit *mDescriptionEdit; | 110 | KTextEdit *mDescriptionEdit; |
111 | QLabel *mOwnerLabel; | 111 | QLabel *mOwnerLabel; |
112 | QComboBox *mSecrecyCombo; | 112 | QComboBox *mSecrecyCombo; |
113 | QCheckBox *mCancelBox; | 113 | QCheckBox *mCancelBox; |
114 | QPushButton *mCategoriesButton; | 114 | QPushButton *mCategoriesButton; |
115 | QPushButton *mCategoriesLabel; | 115 | QPushButton *mCategoriesLabel; |
116 | 116 | ||
117 | private: | 117 | private: |
118 | QPopupMenu * mCatPopup; | 118 | QPopupMenu * mCatPopup; |
119 | QString getFittingPath( const QString ) ; | 119 | QString getFittingPath( const QString &) ; |
120 | QString mAlarmSound; | 120 | QString mAlarmSound; |
121 | QString mAlarmProgram; | 121 | QString mAlarmProgram; |
122 | QString mAlarmMessage; | 122 | QString mAlarmMessage; |
123 | }; | 123 | }; |
124 | 124 | ||
125 | #endif | 125 | #endif |
diff --git a/korganizer/koeventeditor.cpp b/korganizer/koeventeditor.cpp index 9ede543..3e87197 100644 --- a/korganizer/koeventeditor.cpp +++ b/korganizer/koeventeditor.cpp | |||
@@ -1,384 +1,388 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qtooltip.h> | 24 | #include <qtooltip.h> |
25 | #include <qframe.h> | 25 | #include <qframe.h> |
26 | #include <qpixmap.h> | 26 | #include <qpixmap.h> |
27 | #include <qhbox.h> | 27 | #include <qhbox.h> |
28 | #include <qtimer.h> | ||
28 | #include <qdir.h> | 29 | #include <qdir.h> |
29 | #include <qlayout.h> | 30 | #include <qlayout.h> |
30 | #include <qwidgetstack.h> | 31 | #include <qwidgetstack.h> |
31 | #include <qapplication.h> | 32 | #include <qapplication.h> |
32 | 33 | ||
33 | #include <kiconloader.h> | 34 | #include <kiconloader.h> |
34 | #include <kstandarddirs.h> | 35 | #include <kstandarddirs.h> |
35 | #include <kdebug.h> | 36 | #include <kdebug.h> |
36 | #include <klocale.h> | 37 | #include <klocale.h> |
37 | #include <kfiledialog.h> | 38 | #include <kfiledialog.h> |
38 | #include <kmessagebox.h> | 39 | #include <kmessagebox.h> |
39 | #include <libkcal/calendarresources.h> | 40 | #include <libkcal/calendarresources.h> |
40 | #include <libkcal/resourcecalendar.h> | 41 | #include <libkcal/resourcecalendar.h> |
41 | #include <kresources/resourceselectdialog.h> | 42 | #include <kresources/resourceselectdialog.h> |
42 | 43 | ||
43 | #include <libkdepim/categoryselectdialog.h> | 44 | #include <libkdepim/categoryselectdialog.h> |
44 | #include <libkcal/calendarlocal.h> | 45 | #include <libkcal/calendarlocal.h> |
45 | #include <libkcal/icalformat.h> | 46 | #include <libkcal/icalformat.h> |
46 | 47 | ||
47 | #include "koprefs.h" | 48 | #include "koprefs.h" |
48 | 49 | ||
49 | #include "koeventeditor.h" | 50 | #include "koeventeditor.h" |
50 | extern int globalFlagBlockAgenda; | 51 | extern int globalFlagBlockAgenda; |
51 | 52 | ||
52 | KOEventEditor::KOEventEditor( Calendar *calendar, QWidget *parent ) : | 53 | KOEventEditor::KOEventEditor( Calendar *calendar, QWidget *parent ) : |
53 | KOIncidenceEditor( i18n("Edit Event"), calendar, parent ) | 54 | KOIncidenceEditor( i18n("Edit Event"), calendar, parent ) |
54 | { | 55 | { |
55 | mEvent = 0; | 56 | mEvent = 0; |
56 | init(); | 57 | init(); |
57 | if ( QApplication::desktop()->height() <= 240 ) | 58 | if ( QApplication::desktop()->height() <= 240 ) |
58 | hideButtons(); | 59 | hideButtons(); |
59 | } | 60 | } |
60 | 61 | ||
61 | KOEventEditor::~KOEventEditor() | 62 | KOEventEditor::~KOEventEditor() |
62 | { | 63 | { |
63 | //emit dialogClose( mEvent ); | 64 | //emit dialogClose( mEvent ); |
64 | } | 65 | } |
65 | 66 | ||
66 | void KOEventEditor::init() | 67 | void KOEventEditor::init() |
67 | { | 68 | { |
68 | 69 | ||
69 | setupGeneral(); | 70 | setupGeneral(); |
70 | setupAttendeesTab(); | 71 | setupAttendeesTab(); |
71 | setupRecurrence(); | 72 | setupRecurrence(); |
72 | 73 | ||
73 | // Propagate date time settings to recurrence tab | 74 | // Propagate date time settings to recurrence tab |
74 | connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), | 75 | connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), |
75 | mRecurrence,SLOT(setDefaultsDates(QDateTime,QDateTime))); | 76 | mRecurrence,SLOT(setDefaultsDates(QDateTime,QDateTime))); |
76 | connect(mGeneral,SIGNAL(dateTimeStrChanged(const QString &)), | 77 | connect(mGeneral,SIGNAL(dateTimeStrChanged(const QString &)), |
77 | mRecurrence,SLOT(setDateTimeStr(const QString &))); | 78 | mRecurrence,SLOT(setDateTimeStr(const QString &))); |
78 | 79 | ||
79 | // Category dialog | 80 | // Category dialog |
80 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); | 81 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); |
81 | //connect(mCategoryDialog,SIGNAL(categoriesSelected(const QString &)), | 82 | //connect(mCategoryDialog,SIGNAL(categoriesSelected(const QString &)), |
82 | // mGeneral,SLOT(setCategories(const QString &))); | 83 | // mGeneral,SLOT(setCategories(const QString &))); |
83 | 84 | ||
84 | 85 | ||
85 | } | 86 | } |
86 | 87 | ||
87 | void KOEventEditor::reload() | 88 | void KOEventEditor::reload() |
88 | { | 89 | { |
89 | if ( mEvent ) readEvent( mEvent ); | 90 | if ( mEvent ) readEvent( mEvent ); |
90 | } | 91 | } |
91 | 92 | ||
92 | void KOEventEditor::setSecrecy( int sec ) | 93 | void KOEventEditor::setSecrecy( int sec ) |
93 | { | 94 | { |
94 | mGeneral->setSecrecy( sec ); | 95 | mGeneral->setSecrecy( sec ); |
95 | } | 96 | } |
96 | void KOEventEditor::setCategories( QString s ) | 97 | void KOEventEditor::setCategories( QString s ) |
97 | { | 98 | { |
98 | mGeneral->setCategories(s); | 99 | mGeneral->setCategories(s); |
99 | 100 | ||
100 | } | 101 | } |
101 | void KOEventEditor::setupGeneral() | 102 | void KOEventEditor::setupGeneral() |
102 | { | 103 | { |
103 | mGeneral = new KOEditorGeneralEvent( this, "KOEditorGeneralEvent" ); | 104 | mGeneral = new KOEditorGeneralEvent( this, "KOEditorGeneralEvent" ); |
104 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); | 105 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); |
105 | 106 | ||
106 | if( KOPrefs::instance()->mCompactDialogs ) { | 107 | if( KOPrefs::instance()->mCompactDialogs ) { |
107 | QFrame *topFrame = addPage(i18n("General")); | 108 | QFrame *topFrame = addPage(i18n("General")); |
108 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 109 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
109 | topLayout->setSpacing(spacingHint()-1); | 110 | topLayout->setSpacing(spacingHint()-1); |
110 | topLayout->setMargin(marginHint()-1); | 111 | topLayout->setMargin(marginHint()-1); |
111 | topLayout->addStretch ( 1 ); | 112 | topLayout->addStretch ( 1 ); |
112 | mGeneral->initHeader(topFrame,topLayout); | 113 | mGeneral->initHeader(topFrame,topLayout); |
113 | topLayout->addStretch ( 1 ); | 114 | topLayout->addStretch ( 1 ); |
114 | mGeneral->initTime(topFrame,topLayout); | 115 | mGeneral->initTime(topFrame,topLayout); |
115 | topLayout->addStretch ( 1 ); | 116 | topLayout->addStretch ( 1 ); |
116 | // QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); | 117 | // QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); |
117 | mGeneral->initAlarm(topFrame,topLayout); | 118 | mGeneral->initAlarm(topFrame,topLayout); |
118 | topLayout->addStretch ( 1 ); | 119 | topLayout->addStretch ( 1 ); |
119 | mGeneral->enableAlarm( false ); | 120 | mGeneral->enableAlarm( false ); |
120 | 121 | ||
121 | QBoxLayout *buttonLayout; | 122 | QBoxLayout *buttonLayout; |
122 | if ( QApplication::desktop()->width() < 500 && QApplication::desktop()->height() > 240 ) | 123 | if ( QApplication::desktop()->width() < 500 && QApplication::desktop()->height() > 240 ) |
123 | buttonLayout = new QVBoxLayout( topLayout ); | 124 | buttonLayout = new QVBoxLayout( topLayout ); |
124 | else | 125 | else |
125 | buttonLayout = new QHBoxLayout( topLayout ); | 126 | buttonLayout = new QHBoxLayout( topLayout ); |
126 | QHBox* buttonWidget = new QHBox (topFrame); | 127 | QHBox* buttonWidget = new QHBox (topFrame); |
127 | QIconSet icon; | 128 | QIconSet icon; |
128 | if ( QApplication::desktop()->width() < 321 ) | 129 | if ( QApplication::desktop()->width() < 321 ) |
129 | icon = SmallIcon("fileexport16"); | 130 | icon = SmallIcon("fileexport16"); |
130 | else | 131 | else |
131 | icon = SmallIcon("fileexport"); | 132 | icon = SmallIcon("fileexport"); |
132 | QPushButton * loadTemplate = new QPushButton( buttonWidget); | 133 | QPushButton * loadTemplate = new QPushButton( buttonWidget); |
133 | QPushButton * saveTemplate = new QPushButton( buttonWidget); | 134 | QPushButton * saveTemplate = new QPushButton( buttonWidget); |
134 | saveTemplate->setIconSet (icon ) ; | 135 | saveTemplate->setIconSet (icon ) ; |
135 | int size = saveTemplate->sizeHint().height(); | 136 | int size = saveTemplate->sizeHint().height(); |
136 | saveTemplate->setFixedSize( size, size ); | 137 | saveTemplate->setFixedSize( size, size ); |
137 | if ( QApplication::desktop()->width() < 321 ) | 138 | if ( QApplication::desktop()->width() < 321 ) |
138 | icon = SmallIcon("fileimport16"); | 139 | icon = SmallIcon("fileimport16"); |
139 | else | 140 | else |
140 | icon = SmallIcon("fileimport"); | 141 | icon = SmallIcon("fileimport"); |
141 | loadTemplate->setIconSet (icon ) ; | 142 | loadTemplate->setIconSet (icon ) ; |
142 | loadTemplate->setFixedSize( size, size ); | 143 | loadTemplate->setFixedSize( size, size ); |
143 | buttonLayout->addWidget( buttonWidget ); | 144 | buttonLayout->addWidget( buttonWidget ); |
144 | mGeneral->initCategories( topFrame, buttonLayout ); | 145 | mGeneral->initCategories( topFrame, buttonLayout ); |
145 | 146 | ||
146 | topLayout->addStretch( 1 ); | 147 | topLayout->addStretch( 1 ); |
147 | 148 | ||
148 | QFrame *topFrame2 = addPage(i18n("Details")); | 149 | QFrame *topFrame2 = addPage(i18n("Details")); |
149 | 150 | ||
150 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); | 151 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); |
151 | topLayout2->setSpacing(spacingHint()-1); | 152 | topLayout2->setSpacing(spacingHint()-1); |
152 | topLayout2->setMargin(marginHint()-1); | 153 | topLayout2->setMargin(marginHint()-1); |
153 | topLayout2->setSpacing(spacingHint()); | 154 | topLayout2->setSpacing(spacingHint()); |
154 | 155 | ||
155 | mGeneral->initClass(topFrame2,topLayout2); | 156 | mGeneral->initClass(topFrame2,topLayout2); |
156 | mGeneral->initSecrecy( topFrame2, topLayout2 ); | 157 | mGeneral->initSecrecy( topFrame2, topLayout2 ); |
157 | mGeneral->initDescription(topFrame2,topLayout2); | 158 | mGeneral->initDescription(topFrame2,topLayout2); |
158 | 159 | ||
159 | connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); | 160 | connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); |
160 | connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); | 161 | connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); |
161 | } else { | 162 | } else { |
162 | QFrame *topFrame = addPage(i18n("General")); | 163 | QFrame *topFrame = addPage(i18n("General")); |
163 | 164 | ||
164 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 165 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
165 | topLayout->setSpacing(spacingHint()); | 166 | topLayout->setSpacing(spacingHint()); |
166 | 167 | ||
167 | mGeneral->initHeader(topFrame,topLayout); | 168 | mGeneral->initHeader(topFrame,topLayout); |
168 | mGeneral->initTime(topFrame,topLayout); | 169 | mGeneral->initTime(topFrame,topLayout); |
169 | QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); | 170 | QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); |
170 | mGeneral->initAlarm(topFrame,alarmLineLayout); | 171 | mGeneral->initAlarm(topFrame,alarmLineLayout); |
171 | mGeneral->initClass(topFrame,alarmLineLayout); | 172 | mGeneral->initClass(topFrame,alarmLineLayout); |
172 | mGeneral->initDescription(topFrame,topLayout); | 173 | mGeneral->initDescription(topFrame,topLayout); |
173 | QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); | 174 | QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); |
174 | mGeneral->initCategories( topFrame, detailsLayout ); | 175 | mGeneral->initCategories( topFrame, detailsLayout ); |
175 | mGeneral->initSecrecy( topFrame, detailsLayout ); | 176 | mGeneral->initSecrecy( topFrame, detailsLayout ); |
176 | } | 177 | } |
177 | 178 | ||
178 | mGeneral->finishSetup(); | 179 | mGeneral->finishSetup(); |
179 | 180 | ||
180 | } | 181 | } |
181 | 182 | ||
182 | void KOEventEditor::setupRecurrence() | 183 | void KOEventEditor::setupRecurrence() |
183 | { | 184 | { |
184 | QFrame *topFrame = addPage( i18n("Recurrence") ); | 185 | QFrame *topFrame = addPage( i18n("Recurrence") ); |
185 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); | 186 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); |
186 | 187 | ||
187 | mRecurrence = new KOEditorRecurrence( topFrame ); | 188 | mRecurrence = new KOEditorRecurrence( topFrame ); |
188 | topLayout->addWidget( mRecurrence ); | 189 | topLayout->addWidget( mRecurrence ); |
189 | } | 190 | } |
190 | 191 | ||
191 | void KOEventEditor::editEvent(Event *event, bool showDescription) | 192 | void KOEventEditor::editEvent(Event *event, bool showDescription) |
192 | { | 193 | { |
193 | // init(); | 194 | // init(); |
194 | 195 | ||
195 | mEvent = event; | 196 | mEvent = event; |
196 | readEvent(mEvent); | 197 | readEvent(mEvent); |
197 | if ( showDescription ) { | 198 | if ( showDescription ) { |
198 | showPage( 1 ); | 199 | showPage( 1 ); |
199 | mGeneral->setFocusOn( 1 ); | 200 | mGeneral->setFocusOn( 1 ); |
200 | } else { | 201 | } else { |
201 | showPage( 0 ); | 202 | showPage( 0 ); |
202 | mGeneral->setFocusOn( 2 ); | 203 | mGeneral->setFocusOn( 2 ); |
203 | } | 204 | } |
204 | } | 205 | } |
205 | 206 | ||
206 | void KOEventEditor::newEvent( QDateTime from, QDateTime to, bool allDay ) | 207 | void KOEventEditor::newEvent( QDateTime from, QDateTime to, bool allDay ) |
207 | { | 208 | { |
208 | // init(); | 209 | // init(); |
209 | 210 | ||
210 | mEvent = 0; | 211 | mEvent = 0; |
211 | setDefaults(from,to,allDay); | 212 | setDefaults(from,to,allDay); |
212 | } | 213 | } |
213 | 214 | ||
214 | void KOEventEditor::loadDefaults() | 215 | void KOEventEditor::loadDefaults() |
215 | { | 216 | { |
216 | int fmt = KOPrefs::instance()->mStartTime; | 217 | int fmt = KOPrefs::instance()->mStartTime; |
217 | 218 | ||
218 | QDateTime from(QDate::currentDate(), QTime(fmt,0,0)); | 219 | QDateTime from(QDate::currentDate(), QTime(fmt,0,0)); |
219 | QDateTime to(QDate::currentDate(), | 220 | QDateTime to(QDate::currentDate(), |
220 | QTime(fmt+KOPrefs::instance()->mDefaultDuration,0,0)); | 221 | QTime(fmt+KOPrefs::instance()->mDefaultDuration,0,0)); |
221 | 222 | ||
222 | setDefaults(from,to,false); | 223 | setDefaults(from,to,false); |
223 | } | 224 | } |
224 | 225 | ||
225 | bool KOEventEditor::processInput( bool emitTime ) | 226 | bool KOEventEditor::processInput( bool emitTime ) |
226 | { | 227 | { |
227 | if (!validateInput()) return false; | 228 | if (!validateInput()) return false; |
228 | 229 | ||
229 | Event *event = 0; | 230 | Event *event = 0; |
230 | 231 | ||
231 | if (mEvent) event = mEvent; | 232 | if (mEvent) event = mEvent; |
232 | else { | 233 | else { |
233 | event = new Event; | 234 | event = new Event; |
234 | event->setOrganizer(KOPrefs::instance()->email()); | 235 | event->setOrganizer(KOPrefs::instance()->email()); |
235 | } | 236 | } |
236 | 237 | ||
237 | writeEvent(event); | 238 | writeEvent(event); |
238 | if ( emitTime ) { | 239 | if ( emitTime ) { |
239 | globalFlagBlockAgenda = 1; | 240 | globalFlagBlockAgenda = 1; |
240 | emit showAgendaView( false ); | 241 | emit showAgendaView( false ); |
241 | emit jumpToTime( event->dtStart().date() ); | 242 | emit jumpToTime( event->dtStart().date() ); |
242 | globalFlagBlockAgenda = 2; | 243 | globalFlagBlockAgenda = 2; |
243 | 244 | ||
244 | } | 245 | } |
245 | if (mEvent) { | 246 | if (mEvent) { |
246 | event->setRevision(event->revision()+1); | 247 | event->setRevision(event->revision()+1); |
247 | emit eventChanged(event); | 248 | emit eventChanged(event); |
248 | } else { | 249 | } else { |
249 | mCalendar->addEvent(event); | 250 | mCalendar->addEvent(event); |
250 | mEvent = event; | 251 | mEvent = event; |
251 | emit eventAdded(event); | 252 | emit eventAdded(event); |
253 | if ( event->isAlarmEnabled () && !event->alarmEnabled () ) { | ||
254 | QTimer::singleShot( 0, this, SLOT ( alarmWarning() ) ); | ||
255 | } | ||
252 | } | 256 | } |
253 | 257 | ||
254 | return true; | 258 | return true; |
255 | } | 259 | } |
256 | 260 | ||
257 | void KOEventEditor::deleteEvent() | 261 | void KOEventEditor::deleteEvent() |
258 | { | 262 | { |
259 | kdDebug() << "Delete event" << endl; | 263 | kdDebug() << "Delete event" << endl; |
260 | 264 | ||
261 | if (mEvent) { | 265 | if (mEvent) { |
262 | if (KOPrefs::instance()->mConfirm) { | 266 | if (KOPrefs::instance()->mConfirm) { |
263 | switch (msgItemDelete()) { | 267 | switch (msgItemDelete()) { |
264 | case KMessageBox::Continue: // OK | 268 | case KMessageBox::Continue: // OK |
265 | emit eventToBeDeleted(mEvent); | 269 | emit eventToBeDeleted(mEvent); |
266 | emit dialogClose(mEvent); | 270 | emit dialogClose(mEvent); |
267 | mCalendar->deleteEvent(mEvent); | 271 | mCalendar->deleteEvent(mEvent); |
268 | emit eventDeleted(); | 272 | emit eventDeleted(); |
269 | reject(); | 273 | reject(); |
270 | break; | 274 | break; |
271 | } | 275 | } |
272 | } | 276 | } |
273 | else { | 277 | else { |
274 | emit eventToBeDeleted(mEvent); | 278 | emit eventToBeDeleted(mEvent); |
275 | emit dialogClose(mEvent); | 279 | emit dialogClose(mEvent); |
276 | mCalendar->deleteEvent(mEvent); | 280 | mCalendar->deleteEvent(mEvent); |
277 | emit eventDeleted(); | 281 | emit eventDeleted(); |
278 | reject(); | 282 | reject(); |
279 | } | 283 | } |
280 | } else { | 284 | } else { |
281 | reject(); | 285 | reject(); |
282 | } | 286 | } |
283 | } | 287 | } |
284 | 288 | ||
285 | void KOEventEditor::setDefaults(QDateTime from, QDateTime to, bool allDay) | 289 | void KOEventEditor::setDefaults(QDateTime from, QDateTime to, bool allDay) |
286 | { | 290 | { |
287 | mGeneral->setDefaults(from,to,allDay); | 291 | mGeneral->setDefaults(from,to,allDay); |
288 | mDetails->setDefaults(); | 292 | mDetails->setDefaults(); |
289 | mRecurrence->setDefaults(from,to); | 293 | mRecurrence->setDefaults(from,to); |
290 | showPage( 0 ); | 294 | showPage( 0 ); |
291 | mGeneral->setFocusOn( 2 ); | 295 | mGeneral->setFocusOn( 2 ); |
292 | } | 296 | } |
293 | 297 | ||
294 | void KOEventEditor::readEvent( Event *event, bool tmpl ) | 298 | void KOEventEditor::readEvent( Event *event, bool tmpl ) |
295 | { | 299 | { |
296 | mGeneral->readEvent( event, tmpl ); | 300 | mGeneral->readEvent( event, tmpl ); |
297 | mDetails->readEvent( event ); | 301 | mDetails->readEvent( event ); |
298 | mRecurrence->readEvent( event ); | 302 | mRecurrence->readEvent( event ); |
299 | 303 | ||
300 | // categories | 304 | // categories |
301 | //mCategoryDialog->setSelected( event->categories() ); | 305 | //mCategoryDialog->setSelected( event->categories() ); |
302 | } | 306 | } |
303 | 307 | ||
304 | void KOEventEditor::writeEvent(Event *event) | 308 | void KOEventEditor::writeEvent(Event *event) |
305 | { | 309 | { |
306 | mGeneral->writeEvent( event ); | 310 | mGeneral->writeEvent( event ); |
307 | mDetails->writeEvent( event ); | 311 | mDetails->writeEvent( event ); |
308 | 312 | ||
309 | if ( event->organizer() == KOPrefs::instance()->email() ) { | 313 | if ( event->organizer() == KOPrefs::instance()->email() ) { |
310 | Event *ev = new Event( *event ); | 314 | Event *ev = new Event( *event ); |
311 | ev->registerObserver(0); | 315 | ev->registerObserver(0); |
312 | mDetails->cancelAttendeeEvent( ev ); | 316 | mDetails->cancelAttendeeEvent( ev ); |
313 | if ( ev->attendeeCount() > 0 ) { | 317 | if ( ev->attendeeCount() > 0 ) { |
314 | emit deleteAttendee( ev ); | 318 | emit deleteAttendee( ev ); |
315 | } | 319 | } |
316 | delete(ev); | 320 | delete(ev); |
317 | } | 321 | } |
318 | 322 | ||
319 | mRecurrence->writeEvent(event); | 323 | mRecurrence->writeEvent(event); |
320 | } | 324 | } |
321 | 325 | ||
322 | bool KOEventEditor::validateInput() | 326 | bool KOEventEditor::validateInput() |
323 | { | 327 | { |
324 | if (!mGeneral->validateInput()) return false; | 328 | if (!mGeneral->validateInput()) return false; |
325 | if (!mDetails->validateInput()) return false; | 329 | if (!mDetails->validateInput()) return false; |
326 | if (!mRecurrence->validateInput()) return false; | 330 | if (!mRecurrence->validateInput()) return false; |
327 | return true; | 331 | return true; |
328 | } | 332 | } |
329 | 333 | ||
330 | int KOEventEditor::msgItemDelete() | 334 | int KOEventEditor::msgItemDelete() |
331 | { | 335 | { |
332 | return KMessageBox::warningContinueCancel(this, | 336 | return KMessageBox::warningContinueCancel(this, |
333 | i18n("This item will be permanently deleted."), | 337 | i18n("This item will be permanently deleted."), |
334 | i18n("KOrganizer Confirmation"),i18n("Delete")); | 338 | i18n("KOrganizer Confirmation"),i18n("Delete")); |
335 | } | 339 | } |
336 | 340 | ||
337 | void KOEventEditor::slotLoadTemplate() | 341 | void KOEventEditor::slotLoadTemplate() |
338 | { | 342 | { |
339 | 343 | ||
340 | QString fileName =locateLocal( "templates", "events" ); | 344 | QString fileName =locateLocal( "templates", "events" ); |
341 | QDir t_dir; | 345 | QDir t_dir; |
342 | if ( !t_dir.exists(fileName) ) | 346 | if ( !t_dir.exists(fileName) ) |
343 | t_dir.mkdir ( fileName ); | 347 | t_dir.mkdir ( fileName ); |
344 | fileName += "/event"; | 348 | fileName += "/event"; |
345 | fileName = KFileDialog::getOpenFileName( fileName , i18n("Load Event template"), this ); | 349 | fileName = KFileDialog::getOpenFileName( fileName , i18n("Load Event template"), this ); |
346 | if ( fileName.length() == 0 ) | 350 | if ( fileName.length() == 0 ) |
347 | return; | 351 | return; |
348 | CalendarLocal cal; | 352 | CalendarLocal cal; |
349 | ICalFormat format; | 353 | ICalFormat format; |
350 | if ( !format.load( &cal, fileName ) ) { | 354 | if ( !format.load( &cal, fileName ) ) { |
351 | KMessageBox::error( this, i18n("Error loading template file\n '%1'.") | 355 | KMessageBox::error( this, i18n("Error loading template file\n '%1'.") |
352 | .arg( fileName ) ); | 356 | .arg( fileName ) ); |
353 | return ; | 357 | return ; |
354 | } | 358 | } |
355 | QPtrList<Event> events = cal.events(); | 359 | QPtrList<Event> events = cal.events(); |
356 | Event* event = events.first(); | 360 | Event* event = events.first(); |
357 | if ( !event ) { | 361 | if ( !event ) { |
358 | KMessageBox::error( this, | 362 | KMessageBox::error( this, |
359 | i18n("Template does not contain\na valid Event.")); | 363 | i18n("Template does not contain\na valid Event.")); |
360 | } else { | 364 | } else { |
361 | kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl; | 365 | kdDebug() << "KOEventEditor::slotLoadTemplate(): readTemplate" << endl; |
362 | readEvent( event, true ); | 366 | readEvent( event, true ); |
363 | } | 367 | } |
364 | } | 368 | } |
365 | 369 | ||
366 | 370 | ||
367 | void KOEventEditor::slotSaveTemplate() | 371 | void KOEventEditor::slotSaveTemplate() |
368 | { | 372 | { |
369 | QString fileName =locateLocal( "templates", "events" ); | 373 | QString fileName =locateLocal( "templates", "events" ); |
370 | QDir t_dir; | 374 | QDir t_dir; |
371 | if ( !t_dir.exists(fileName) ) | 375 | if ( !t_dir.exists(fileName) ) |
372 | t_dir.mkdir ( fileName ); | 376 | t_dir.mkdir ( fileName ); |
373 | fileName += "/event"; | 377 | fileName += "/event"; |
374 | fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Event template"), this ); | 378 | fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Event template"), this ); |
375 | if ( fileName.length() > 0 ) | 379 | if ( fileName.length() > 0 ) |
376 | saveTemplate( fileName ); | 380 | saveTemplate( fileName ); |
377 | } | 381 | } |
378 | 382 | ||
379 | void KOEventEditor::saveTemplate( const QString &templateName ) | 383 | void KOEventEditor::saveTemplate( const QString &templateName ) |
380 | { | 384 | { |
381 | Event *event = new Event; | 385 | Event *event = new Event; |
382 | writeEvent( event ); | 386 | writeEvent( event ); |
383 | saveAsTemplate( event, templateName ); | 387 | saveAsTemplate( event, templateName ); |
384 | } | 388 | } |
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp index 02b54da..607e549 100644 --- a/korganizer/koeventviewer.cpp +++ b/korganizer/koeventviewer.cpp | |||
@@ -215,501 +215,509 @@ void KOEventViewer::setSource(const QString& n) | |||
215 | /* | 215 | /* |
216 | KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. | 216 | KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. |
217 | We start it without its main interface | 217 | We start it without its main interface |
218 | */ | 218 | */ |
219 | KIconLoader* iconLoader = new KIconLoader(); | 219 | KIconLoader* iconLoader = new KIconLoader(); |
220 | QString iconPath = iconLoader->iconPath("go",KIcon::Small); | 220 | QString iconPath = iconLoader->iconPath("go",KIcon::Small); |
221 | ActionManager::setStartedKAddressBook(true); | 221 | ActionManager::setStartedKAddressBook(true); |
222 | tmpStr = "kaddressbook --editor-only --uid "; | 222 | tmpStr = "kaddressbook --editor-only --uid "; |
223 | tmpStr += KProcess::quote(n.mid(6)); | 223 | tmpStr += KProcess::quote(n.mid(6)); |
224 | KRun::runCommand(tmpStr,"KAddressBook",iconPath); | 224 | KRun::runCommand(tmpStr,"KAddressBook",iconPath); |
225 | return; | 225 | return; |
226 | } | 226 | } |
227 | } else { | 227 | } else { |
228 | //QTextBrowser::setSource(n); | 228 | //QTextBrowser::setSource(n); |
229 | } | 229 | } |
230 | #endif | 230 | #endif |
231 | } | 231 | } |
232 | void KOEventViewer::mailToAttendees( bool all ) | 232 | void KOEventViewer::mailToAttendees( bool all ) |
233 | { | 233 | { |
234 | QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); | 234 | QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); |
235 | if (attendees.count() == 0) return; | 235 | if (attendees.count() == 0) return; |
236 | QStringList nameList; | 236 | QStringList nameList; |
237 | QStringList emailList; | 237 | QStringList emailList; |
238 | QStringList uidList; | 238 | QStringList uidList; |
239 | Attendee* a; | 239 | Attendee* a; |
240 | for(a=attendees.first();a;a=attendees.next()) { | 240 | for(a=attendees.first();a;a=attendees.next()) { |
241 | if ( !all && !a->RSVP() ) continue; | 241 | if ( !all && !a->RSVP() ) continue; |
242 | if (!a->email().isEmpty()) { | 242 | if (!a->email().isEmpty()) { |
243 | #ifndef DESKTOP_VERSION | 243 | #ifndef DESKTOP_VERSION |
244 | nameList.append (a->realName() ); | 244 | nameList.append (a->realName() ); |
245 | emailList.append (a->email() ); | 245 | emailList.append (a->email() ); |
246 | uidList.append (a->uid() ); | 246 | uidList.append (a->uid() ); |
247 | #else | 247 | #else |
248 | emailList.append(a->realName() +" <" + a->email() +">"); | 248 | emailList.append(a->realName() +" <" + a->email() +">"); |
249 | #endif | 249 | #endif |
250 | } | 250 | } |
251 | } | 251 | } |
252 | #ifndef DESKTOP_VERSION | 252 | #ifndef DESKTOP_VERSION |
253 | QString uid = "ComposeMailUIpick2"+mMailSubject; | 253 | QString uid = "ComposeMailUIpick2"+mMailSubject; |
254 | bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); | 254 | bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); |
255 | 255 | ||
256 | #else | 256 | #else |
257 | ExternalAppHandler::instance()->mailToMultipleContacts( emailList.join(","), mMailSubject ); | 257 | ExternalAppHandler::instance()->mailToMultipleContacts( emailList.join(","), mMailSubject ); |
258 | #endif | 258 | #endif |
259 | 259 | ||
260 | } | 260 | } |
261 | void KOEventViewer::addTag(const QString & tag,const QString & text) | 261 | void KOEventViewer::addTag(const QString & tag,const QString & text) |
262 | { | 262 | { |
263 | int number=text.contains("\n"); | 263 | int number=text.contains("\n"); |
264 | QString str = "<" + tag + ">"; | 264 | QString str = "<" + tag + ">"; |
265 | QString tmpText=text; | 265 | QString tmpText=text; |
266 | QString tmpStr=str; | 266 | QString tmpStr=str; |
267 | if(number !=-1) | 267 | if(number !=-1) |
268 | { | 268 | { |
269 | if (number > 0) { | 269 | if (number > 0) { |
270 | int pos=0; | 270 | int pos=0; |
271 | QString tmp; | 271 | QString tmp; |
272 | for(int i=0;i<=number;i++) { | 272 | for(int i=0;i<=number;i++) { |
273 | pos=tmpText.find("\n"); | 273 | pos=tmpText.find("\n"); |
274 | tmp=tmpText.left(pos); | 274 | tmp=tmpText.left(pos); |
275 | tmpText=tmpText.right(tmpText.length()-pos-1); | 275 | tmpText=tmpText.right(tmpText.length()-pos-1); |
276 | tmpStr+=tmp+"<br>"; | 276 | tmpStr+=tmp+"<br>"; |
277 | } | 277 | } |
278 | } | 278 | } |
279 | else tmpStr += tmpText; | 279 | else tmpStr += tmpText; |
280 | tmpStr+="</" + tag + ">"; | 280 | tmpStr+="</" + tag + ">"; |
281 | mText.append(tmpStr); | 281 | mText.append(tmpStr); |
282 | } | 282 | } |
283 | else | 283 | else |
284 | { | 284 | { |
285 | str += text + "</" + tag + ">"; | 285 | str += text + "</" + tag + ">"; |
286 | mText.append(str); | 286 | mText.append(str); |
287 | } | 287 | } |
288 | } | 288 | } |
289 | 289 | ||
290 | void KOEventViewer::setColorMode( int m ) | 290 | void KOEventViewer::setColorMode( int m ) |
291 | { | 291 | { |
292 | mColorMode = m; | 292 | mColorMode = m; |
293 | } | 293 | } |
294 | void KOEventViewer::appendEvent(Event *event, int mode ) | 294 | void KOEventViewer::appendEvent(Event *event, int mode ) |
295 | { | 295 | { |
296 | mMailSubject = ""; | 296 | mMailSubject = ""; |
297 | mCurrentIncidence = event; | 297 | mCurrentIncidence = event; |
298 | bool shortDate = KOPrefs::instance()->mShortDateInViewer; | 298 | bool shortDate = KOPrefs::instance()->mShortDateInViewer; |
299 | bool wideScreen = ( QApplication::desktop()->width() >= 640 ); | 299 | bool wideScreen = ( QApplication::desktop()->width() >= 640 ); |
300 | topLevelWidget()->setCaption(i18n("Event Viewer")); | 300 | topLevelWidget()->setCaption(i18n("Event Viewer")); |
301 | if ( mode == 0 ) { | 301 | if ( mode == 0 ) { |
302 | addTag("h2",deTag(event->summary())); | 302 | addTag("h2",deTag(event->summary())); |
303 | formatReadOnly(event); | 303 | formatReadOnly(event); |
304 | } | 304 | } |
305 | else { | 305 | else { |
306 | if ( mColorMode == 1 ) { | 306 | if ( mColorMode == 1 ) { |
307 | mText +="<font color=\"#00A000\">"; | 307 | mText +="<font color=\"#00A000\">"; |
308 | } | 308 | } |
309 | if ( mColorMode == 2 ) { | 309 | if ( mColorMode == 2 ) { |
310 | mText +="<font color=\"#C00000\">"; | 310 | mText +="<font color=\"#C00000\">"; |
311 | } | 311 | } |
312 | // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; | 312 | // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; |
313 | if ( mode == 1 ) { | 313 | if ( mode == 1 ) { |
314 | addTag("h2",i18n( "Local: " ) +deTag(event->summary())); | 314 | addTag("h2",i18n( "Local: " ) +deTag(event->summary())); |
315 | } else { | 315 | } else { |
316 | addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); | 316 | addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); |
317 | } | 317 | } |
318 | formatReadOnly(event); | 318 | formatReadOnly(event); |
319 | addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); | 319 | addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); |
320 | if ( mColorMode ) | 320 | if ( mColorMode ) |
321 | mText += "</font>"; | 321 | mText += "</font>"; |
322 | } | 322 | } |
323 | mMailSubject += i18n( "Meeting " )+ event->summary(); | 323 | mMailSubject += i18n( "Meeting " )+ event->summary(); |
324 | if (event->cancelled ()) { | 324 | if (event->cancelled ()) { |
325 | mText +="<font color=\"#B00000\">"; | 325 | mText +="<font color=\"#B00000\">"; |
326 | addTag("i",i18n("This event has been cancelled!")); | 326 | addTag("i",i18n("This event has been cancelled!")); |
327 | mText.append("<br>"); | 327 | mText.append("<br>"); |
328 | mText += "</font>"; | 328 | mText += "</font>"; |
329 | mMailSubject += i18n("(cancelled)"); | 329 | mMailSubject += i18n("(cancelled)"); |
330 | } | 330 | } |
331 | 331 | ||
332 | if (event->doesFloat()) { | 332 | if (event->doesFloat()) { |
333 | if (event->isMultiDay()) { | 333 | if (event->isMultiDay()) { |
334 | mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") | 334 | mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") |
335 | .arg(event->dtStartDateStr(shortDate)) | 335 | .arg(event->dtStartDateStr(shortDate)) |
336 | .arg(event->dtEndDateStr(shortDate))); | 336 | .arg(event->dtEndDateStr(shortDate))); |
337 | mText.append(i18n("<p><b>Duration:</b> %1 days</p>") | 337 | mText.append(i18n("<p><b>Duration:</b> %1 days</p>") |
338 | .arg(event->dtStart().daysTo(event->dtEnd())+1)); | 338 | .arg(event->dtStart().daysTo(event->dtEnd())+1)); |
339 | } else { | 339 | } else { |
340 | mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); | 340 | mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); |
341 | } | 341 | } |
342 | } else { | 342 | } else { |
343 | if (event->isMultiDay()) { | 343 | if (event->isMultiDay()) { |
344 | mText.append(i18n("<p><b>From:</b> %1</p> ") | 344 | mText.append(i18n("<p><b>From:</b> %1</p> ") |
345 | .arg(event->dtStartStr( shortDate))); | 345 | .arg(event->dtStartStr( shortDate))); |
346 | mText.append(i18n("<p><b>To:</b> %1</p>") | 346 | mText.append(i18n("<p><b>To:</b> %1</p>") |
347 | .arg(event->dtEndStr(shortDate))); | 347 | .arg(event->dtEndStr(shortDate))); |
348 | } else { | 348 | } else { |
349 | mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") | 349 | mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") |
350 | .arg(event->dtStartTimeStr()) | 350 | .arg(event->dtStartTimeStr()) |
351 | .arg(event->dtEndTimeStr())); | 351 | .arg(event->dtEndTimeStr())); |
352 | mText.append(i18n("<p><b>On:</b> %1</p> ") | 352 | mText.append(i18n("<p><b>On:</b> %1</p> ") |
353 | .arg(event->dtStartDateStr( shortDate ))); | 353 | .arg(event->dtStartDateStr( shortDate ))); |
354 | } | 354 | } |
355 | } | 355 | } |
356 | if (!event->location().isEmpty()) { | 356 | if (!event->location().isEmpty()) { |
357 | addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); | 357 | addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); |
358 | mMailSubject += i18n(" at ") + event->location(); | 358 | mMailSubject += i18n(" at ") + event->location(); |
359 | } | 359 | } |
360 | if (event->doesRecur()) { | 360 | if (event->doesRecur()) { |
361 | 361 | ||
362 | QString recurText = event->recurrenceText(); | 362 | QString recurText = event->recurrenceText(); |
363 | addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); | 363 | addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); |
364 | bool ok; | 364 | bool ok; |
365 | QDate start = QDate::currentDate(); | 365 | QDate start = QDate::currentDate(); |
366 | QDateTime next; | 366 | QDateTime next; |
367 | next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); | 367 | next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); |
368 | if ( ok ) { | 368 | if ( ok ) { |
369 | if ( wideScreen ){ | 369 | if ( wideScreen ){ |
370 | addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) ); | 370 | addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) ); |
371 | } else { | 371 | } else { |
372 | addTag("p",i18n("<b>Next recurrence is on:</b>") ); | 372 | addTag("p",i18n("<b>Next recurrence is on:</b>") ); |
373 | addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); | 373 | addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); |
374 | } | 374 | } |
375 | mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); | 375 | mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); |
376 | 376 | ||
377 | } else { | 377 | } else { |
378 | bool last; | 378 | bool last; |
379 | QDate nextd; | 379 | QDate nextd; |
380 | nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); | 380 | nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); |
381 | if ( last ) { | 381 | if ( last ) { |
382 | if ( wideScreen ){ | 382 | if ( wideScreen ){ |
383 | addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate )); | 383 | addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate )); |
384 | } else{ | 384 | } else{ |
385 | addTag("p",i18n("<b>Last recurrence was on:</b>") ); | 385 | addTag("p",i18n("<b>Last recurrence was on:</b>") ); |
386 | addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); | 386 | addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); |
387 | } | 387 | } |
388 | } | 388 | } |
389 | } | 389 | } |
390 | } else { | 390 | } else { |
391 | mMailSubject += i18n(" - " )+event->dtStartStr( true ); | 391 | mMailSubject += i18n(" - " )+event->dtStartStr( true ); |
392 | 392 | ||
393 | } | 393 | } |
394 | 394 | ||
395 | 395 | ||
396 | if (event->isAlarmEnabled()) { | 396 | if (event->isAlarmEnabled()) { |
397 | Alarm *alarm =event->alarms().first() ; | 397 | Alarm *alarm =event->alarms().first() ; |
398 | QDateTime t = alarm->time(); | 398 | QDateTime t = alarm->time(); |
399 | QString s =i18n("( %1 before )").arg( alarm->offsetText() ); | 399 | QString s =i18n("( %1 before )").arg( alarm->offsetText() ); |
400 | if(wideScreen ){ | 400 | if(wideScreen ){ |
401 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); | 401 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); |
402 | }else{ | 402 | }else{ |
403 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); | 403 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); |
404 | addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); | 404 | addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); |
405 | } | 405 | } |
406 | //addTag("p",s); | 406 | //addTag("p",s); |
407 | if ( !(event->alarmEnabled() ) ) { | ||
408 | addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>"); | ||
409 | |||
410 | } | ||
407 | } | 411 | } |
408 | 412 | ||
409 | addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); | 413 | addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); |
410 | 414 | ||
411 | formatCategories(event); | 415 | formatCategories(event); |
412 | 416 | ||
413 | formatAttendees(event); | 417 | formatAttendees(event); |
414 | 418 | ||
415 | if ( KOPrefs::instance()->mEVshowCreated ) { | 419 | if ( KOPrefs::instance()->mEVshowCreated ) { |
416 | if(wideScreen ){ | 420 | if(wideScreen ){ |
417 | addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); | 421 | addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); |
418 | }else{ | 422 | }else{ |
419 | addTag("p",i18n("<b>Created: ") +" </b>"); | 423 | addTag("p",i18n("<b>Created: ") +" </b>"); |
420 | addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); | 424 | addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); |
421 | } | 425 | } |
422 | 426 | ||
423 | 427 | ||
424 | } | 428 | } |
425 | if ( KOPrefs::instance()->mEVshowChanged ) { | 429 | if ( KOPrefs::instance()->mEVshowChanged ) { |
426 | if(wideScreen ){ | 430 | if(wideScreen ){ |
427 | addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); | 431 | addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); |
428 | }else{ | 432 | }else{ |
429 | addTag("p",i18n("<b>Last modified: ") +" </b>"); | 433 | addTag("p",i18n("<b>Last modified: ") +" </b>"); |
430 | addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); | 434 | addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); |
431 | } | 435 | } |
432 | 436 | ||
433 | } | 437 | } |
434 | if ( KOPrefs::instance()->mEVshowDetails ) { | 438 | if ( KOPrefs::instance()->mEVshowDetails ) { |
435 | if (!event->description().isEmpty()) { | 439 | if (!event->description().isEmpty()) { |
436 | addTag("p",i18n("<b>Details: </b>")); | 440 | addTag("p",i18n("<b>Details: </b>")); |
437 | addTag("p",deTag(event->description())); | 441 | addTag("p",deTag(event->description())); |
438 | } | 442 | } |
439 | } | 443 | } |
440 | setText(mText); | 444 | setText(mText); |
441 | //QWhatsThis::add(this,mText); | 445 | //QWhatsThis::add(this,mText); |
442 | 446 | ||
443 | } | 447 | } |
444 | 448 | ||
445 | void KOEventViewer::appendTodo(Todo *event, int mode ) | 449 | void KOEventViewer::appendTodo(Todo *event, int mode ) |
446 | { | 450 | { |
447 | mMailSubject = ""; | 451 | mMailSubject = ""; |
448 | mCurrentIncidence = event; | 452 | mCurrentIncidence = event; |
449 | topLevelWidget()->setCaption(i18n("Todo Viewer")); | 453 | topLevelWidget()->setCaption(i18n("Todo Viewer")); |
450 | bool shortDate = KOPrefs::instance()->mShortDateInViewer; | 454 | bool shortDate = KOPrefs::instance()->mShortDateInViewer; |
451 | bool wideScreen = ( QApplication::desktop()->width() >= 640 ); | 455 | bool wideScreen = ( QApplication::desktop()->width() >= 640 ); |
452 | if (mode == 0 ) { | 456 | if (mode == 0 ) { |
453 | addTag("h2",deTag(event->summary())); | 457 | addTag("h2",deTag(event->summary())); |
454 | formatReadOnly(event); | 458 | formatReadOnly(event); |
455 | } | 459 | } |
456 | else { | 460 | else { |
457 | if ( mColorMode == 1 ) { | 461 | if ( mColorMode == 1 ) { |
458 | mText +="<font color=\"#00A000\">"; | 462 | mText +="<font color=\"#00A000\">"; |
459 | } | 463 | } |
460 | if ( mColorMode == 2 ) { | 464 | if ( mColorMode == 2 ) { |
461 | mText +="<font color=\"#B00000\">"; | 465 | mText +="<font color=\"#B00000\">"; |
462 | } | 466 | } |
463 | if ( mode == 1 ) { | 467 | if ( mode == 1 ) { |
464 | addTag("h2",i18n( "Local: " ) +deTag(event->summary())); | 468 | addTag("h2",i18n( "Local: " ) +deTag(event->summary())); |
465 | } else { | 469 | } else { |
466 | addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); | 470 | addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); |
467 | } | 471 | } |
468 | formatReadOnly(event); | 472 | formatReadOnly(event); |
469 | addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); | 473 | addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); |
470 | if ( mColorMode ) | 474 | if ( mColorMode ) |
471 | mText += "</font>"; | 475 | mText += "</font>"; |
472 | } | 476 | } |
473 | mMailSubject += i18n( "Todo " )+ event->summary(); | 477 | mMailSubject += i18n( "Todo " )+ event->summary(); |
474 | 478 | ||
475 | if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { | 479 | if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { |
476 | mText +="<font color=\"#B00000\">"; | 480 | mText +="<font color=\"#B00000\">"; |
477 | addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); | 481 | addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); |
478 | mText += "</font>"; | 482 | mText += "</font>"; |
479 | } else { | 483 | } else { |
480 | mText.append(i18n("<p><i>%1 % completed</i></p>") | 484 | mText.append(i18n("<p><i>%1 % completed</i></p>") |
481 | .arg(event->percentComplete())); | 485 | .arg(event->percentComplete())); |
482 | } | 486 | } |
483 | 487 | ||
484 | if (event->cancelled ()) { | 488 | if (event->cancelled ()) { |
485 | mText +="<font color=\"#B00000\">"; | 489 | mText +="<font color=\"#B00000\">"; |
486 | addTag("i",i18n("This todo has been cancelled!")); | 490 | addTag("i",i18n("This todo has been cancelled!")); |
487 | mText.append("<br>"); | 491 | mText.append("<br>"); |
488 | mText += "</font>"; | 492 | mText += "</font>"; |
489 | mMailSubject += i18n("(cancelled)"); | 493 | mMailSubject += i18n("(cancelled)"); |
490 | } | 494 | } |
491 | 495 | ||
492 | 496 | ||
493 | 497 | ||
494 | if (event->doesRecur()) { | 498 | if (event->doesRecur()) { |
495 | 499 | ||
496 | QString recurText = event->recurrence()->recurrenceText(); | 500 | QString recurText = event->recurrence()->recurrenceText(); |
497 | addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); | 501 | addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); |
498 | 502 | ||
499 | } | 503 | } |
500 | if (event->hasStartDate()) { | 504 | if (event->hasStartDate()) { |
501 | mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); | 505 | mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); |
502 | } | 506 | } |
503 | if (event->hasDueDate()) { | 507 | if (event->hasDueDate()) { |
504 | mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); | 508 | mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); |
505 | mMailSubject += i18n(" - " )+event->dtDueStr( true ); | 509 | mMailSubject += i18n(" - " )+event->dtDueStr( true ); |
506 | } | 510 | } |
507 | if (!event->location().isEmpty()) { | 511 | if (!event->location().isEmpty()) { |
508 | addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); | 512 | addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); |
509 | mMailSubject += i18n(" at ") + event->location(); | 513 | mMailSubject += i18n(" at ") + event->location(); |
510 | } | 514 | } |
511 | mText.append(i18n("<p><b>Priority:</b> %2</p>") | 515 | mText.append(i18n("<p><b>Priority:</b> %2</p>") |
512 | .arg(QString::number(event->priority()))); | 516 | .arg(QString::number(event->priority()))); |
513 | 517 | ||
514 | if (event->isAlarmEnabled()) { | 518 | if (event->isAlarmEnabled()) { |
515 | Alarm *alarm =event->alarms().first() ; | 519 | Alarm *alarm =event->alarms().first() ; |
516 | QDateTime t = alarm->time(); | 520 | QDateTime t = alarm->time(); |
517 | QString s =i18n("( %1 before )").arg( alarm->offsetText() ); | 521 | QString s =i18n("( %1 before )").arg( alarm->offsetText() ); |
518 | if ( wideScreen ) { | 522 | if ( wideScreen ) { |
519 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); | 523 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); |
520 | } else { | 524 | } else { |
521 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); | 525 | addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); |
522 | addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); | 526 | addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); |
523 | } | 527 | } |
528 | if ( !(event->alarmEnabled() ) ) { | ||
529 | addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>"); | ||
530 | |||
531 | } | ||
524 | } | 532 | } |
525 | 533 | ||
526 | addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); | 534 | addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); |
527 | 535 | ||
528 | formatCategories(event); | 536 | formatCategories(event); |
529 | 537 | ||
530 | formatAttendees(event); | 538 | formatAttendees(event); |
531 | 539 | ||
532 | if ( KOPrefs::instance()->mEVshowCreated ) { | 540 | if ( KOPrefs::instance()->mEVshowCreated ) { |
533 | if(wideScreen ){ | 541 | if(wideScreen ){ |
534 | 542 | ||
535 | addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); | 543 | addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); |
536 | 544 | ||
537 | } else { | 545 | } else { |
538 | addTag("p",i18n("<b>Created: ") +" </b>"); | 546 | addTag("p",i18n("<b>Created: ") +" </b>"); |
539 | addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); | 547 | addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); |
540 | } | 548 | } |
541 | } | 549 | } |
542 | if ( KOPrefs::instance()->mEVshowChanged ) { | 550 | if ( KOPrefs::instance()->mEVshowChanged ) { |
543 | if(wideScreen ){ | 551 | if(wideScreen ){ |
544 | addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); | 552 | addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); |
545 | 553 | ||
546 | } else { | 554 | } else { |
547 | addTag("p",i18n("<b>Last modified: ") +" </b>"); | 555 | addTag("p",i18n("<b>Last modified: ") +" </b>"); |
548 | addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); | 556 | addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); |
549 | } | 557 | } |
550 | } | 558 | } |
551 | if ( event->relatedTo() ) { | 559 | if ( event->relatedTo() ) { |
552 | addTag("b",i18n("Parent todo:<br>")); | 560 | addTag("b",i18n("Parent todo:<br>")); |
553 | 561 | ||
554 | QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary()); | 562 | QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary()); |
555 | 563 | ||
556 | mText += t_name; | 564 | mText += t_name; |
557 | mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">"; | 565 | mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">"; |
558 | mText += deTag(event->relatedTo()->summary()); | 566 | mText += deTag(event->relatedTo()->summary()); |
559 | mText += "</a><br>"; | 567 | mText += "</a><br>"; |
560 | 568 | ||
561 | // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>"); | 569 | // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>"); |
562 | } | 570 | } |
563 | QPtrList<Incidence> Relations = event->relations(); | 571 | QPtrList<Incidence> Relations = event->relations(); |
564 | Incidence *to; | 572 | Incidence *to; |
565 | if ( Relations.first() ) | 573 | if ( Relations.first() ) |
566 | addTag("b",i18n("Sub todos:<br>")); | 574 | addTag("b",i18n("Sub todos:<br>")); |
567 | for (to=Relations.first();to;to=Relations.next()) { | 575 | for (to=Relations.first();to;to=Relations.next()) { |
568 | QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary()); | 576 | QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary()); |
569 | mText += t_name; | 577 | mText += t_name; |
570 | mText += "<a href=\"todo_uid:" + to->uid() + "\">"; | 578 | mText += "<a href=\"todo_uid:" + to->uid() + "\">"; |
571 | mText += deTag(to->summary()); | 579 | mText += deTag(to->summary()); |
572 | mText += "</a><br>"; | 580 | mText += "</a><br>"; |
573 | 581 | ||
574 | } | 582 | } |
575 | 583 | ||
576 | if ( KOPrefs::instance()->mEVshowDetails ) { | 584 | if ( KOPrefs::instance()->mEVshowDetails ) { |
577 | if (!event->description().isEmpty()) { | 585 | if (!event->description().isEmpty()) { |
578 | addTag("p",i18n("<b>Details: </b>")); | 586 | addTag("p",i18n("<b>Details: </b>")); |
579 | addTag("p",deTag(event->description())); | 587 | addTag("p",deTag(event->description())); |
580 | } | 588 | } |
581 | } | 589 | } |
582 | setText(mText); | 590 | setText(mText); |
583 | } | 591 | } |
584 | 592 | ||
585 | void KOEventViewer::formatCategories(Incidence *event) | 593 | void KOEventViewer::formatCategories(Incidence *event) |
586 | { | 594 | { |
587 | if (!event->categoriesStr().isEmpty()) { | 595 | if (!event->categoriesStr().isEmpty()) { |
588 | if (event->categories().count() == 1) { | 596 | if (event->categories().count() == 1) { |
589 | addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace()); | 597 | addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace()); |
590 | } else { | 598 | } else { |
591 | addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ; | 599 | addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ; |
592 | } | 600 | } |
593 | } | 601 | } |
594 | } | 602 | } |
595 | void KOEventViewer::formatAttendees(Incidence *event) | 603 | void KOEventViewer::formatAttendees(Incidence *event) |
596 | { | 604 | { |
597 | QPtrList<Attendee> attendees = event->attendees(); | 605 | QPtrList<Attendee> attendees = event->attendees(); |
598 | if (attendees.count()) { | 606 | if (attendees.count()) { |
599 | 607 | ||
600 | 608 | ||
601 | QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); | 609 | QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); |
602 | QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); | 610 | QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); |
603 | addTag("h3",i18n("Organizer")); | 611 | addTag("h3",i18n("Organizer")); |
604 | mText.append("<ul><li>"); | 612 | mText.append("<ul><li>"); |
605 | #ifndef KORG_NOKABC | 613 | #ifndef KORG_NOKABC |
606 | 614 | ||
607 | #ifdef DESKTOP_VERSION | 615 | #ifdef DESKTOP_VERSION |
608 | KABC::AddressBook *add_book = KABC::StdAddressBook::self(); | 616 | KABC::AddressBook *add_book = KABC::StdAddressBook::self(); |
609 | KABC::Addressee::List addressList; | 617 | KABC::Addressee::List addressList; |
610 | addressList = add_book->findByEmail(event->organizer()); | 618 | addressList = add_book->findByEmail(event->organizer()); |
611 | KABC::Addressee o = addressList.first(); | 619 | KABC::Addressee o = addressList.first(); |
612 | if (!o.isEmpty() && addressList.size()<2) { | 620 | if (!o.isEmpty() && addressList.size()<2) { |
613 | mText += "<a href=\"uid:" + o.uid() + "\">"; | 621 | mText += "<a href=\"uid:" + o.uid() + "\">"; |
614 | mText += o.formattedName(); | 622 | mText += o.formattedName(); |
615 | mText += "</a>\n"; | 623 | mText += "</a>\n"; |
616 | } else { | 624 | } else { |
617 | mText.append(event->organizer()); | 625 | mText.append(event->organizer()); |
618 | } | 626 | } |
619 | #else //DESKTOP_VERSION | 627 | #else //DESKTOP_VERSION |
620 | mText += "<a href=\"uid:organizer\">"; | 628 | mText += "<a href=\"uid:organizer\">"; |
621 | mText += event->organizer(); | 629 | mText += event->organizer(); |
622 | mText += "</a>\n"; | 630 | mText += "</a>\n"; |
623 | #endif //DESKTOP_VERSION | 631 | #endif //DESKTOP_VERSION |
624 | 632 | ||
625 | 633 | ||
626 | #else | 634 | #else |
627 | mText.append(event->organizer()); | 635 | mText.append(event->organizer()); |
628 | #endif | 636 | #endif |
629 | 637 | ||
630 | if (iconPath) { | 638 | if (iconPath) { |
631 | mText += " <a href=\"mailto:" + event->organizer() + "\">"; | 639 | mText += " <a href=\"mailto:" + event->organizer() + "\">"; |
632 | mText += "<IMG src=\"" + iconPath + "\">"; | 640 | mText += "<IMG src=\"" + iconPath + "\">"; |
633 | mText += "</a>\n"; | 641 | mText += "</a>\n"; |
634 | } | 642 | } |
635 | mText.append("</li></ul>"); | 643 | mText.append("</li></ul>"); |
636 | 644 | ||
637 | addTag("h3",i18n("Attendees")); | 645 | addTag("h3",i18n("Attendees")); |
638 | Attendee *a; | 646 | Attendee *a; |
639 | mText.append("<ul>"); | 647 | mText.append("<ul>"); |
640 | int a_count = 0; | 648 | int a_count = 0; |
641 | int a_count_nr = 0; | 649 | int a_count_nr = 0; |
642 | 650 | ||
643 | for(a=attendees.first();a;a=attendees.next()) { | 651 | for(a=attendees.first();a;a=attendees.next()) { |
644 | #ifndef KORG_NOKABC | 652 | #ifndef KORG_NOKABC |
645 | #ifdef DESKTOP_VERSION | 653 | #ifdef DESKTOP_VERSION |
646 | if (a->name().isEmpty()) { | 654 | if (a->name().isEmpty()) { |
647 | addressList = add_book->findByEmail(a->email()); | 655 | addressList = add_book->findByEmail(a->email()); |
648 | KABC::Addressee o = addressList.first(); | 656 | KABC::Addressee o = addressList.first(); |
649 | if (!o.isEmpty() && addressList.size()<2) { | 657 | if (!o.isEmpty() && addressList.size()<2) { |
650 | mText += "<a href=\"uid:" + o.uid() + "\">"; | 658 | mText += "<a href=\"uid:" + o.uid() + "\">"; |
651 | mText += o.formattedName(); | 659 | mText += o.formattedName(); |
652 | mText += "</a>\n"; | 660 | mText += "</a>\n"; |
653 | } else { | 661 | } else { |
654 | mText += "<li>"; | 662 | mText += "<li>"; |
655 | mText.append(a->email()); | 663 | mText.append(a->email()); |
656 | mText += "\n"; | 664 | mText += "\n"; |
657 | } | 665 | } |
658 | } else { | 666 | } else { |
659 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; | 667 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; |
660 | if (!a->name().isEmpty()) mText += a->name(); | 668 | if (!a->name().isEmpty()) mText += a->name(); |
661 | else mText += a->email(); | 669 | else mText += a->email(); |
662 | mText += "</a>\n"; | 670 | mText += "</a>\n"; |
663 | } | 671 | } |
664 | #else //DESKTOP_VERSION | 672 | #else //DESKTOP_VERSION |
665 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; | 673 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; |
666 | if (!a->name().isEmpty()) mText += a->name(); | 674 | if (!a->name().isEmpty()) mText += a->name(); |
667 | else mText += a->email(); | 675 | else mText += a->email(); |
668 | mText += "</a>\n"; | 676 | mText += "</a>\n"; |
669 | #endif //DESKTOP_VERSION | 677 | #endif //DESKTOP_VERSION |
670 | #else | 678 | #else |
671 | //qDebug("nokabc "); | 679 | //qDebug("nokabc "); |
672 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; | 680 | mText += "<li><a href=\"uid:" + a->uid() + "\">"; |
673 | if (!a->name().isEmpty()) mText += a->name(); | 681 | if (!a->name().isEmpty()) mText += a->name(); |
674 | else mText += a->email(); | 682 | else mText += a->email(); |
675 | mText += "</a>\n"; | 683 | mText += "</a>\n"; |
676 | #endif | 684 | #endif |
677 | 685 | ||
678 | 686 | ||
679 | if (!a->email().isEmpty()) { | 687 | if (!a->email().isEmpty()) { |
680 | if (iconPath) { | 688 | if (iconPath) { |
681 | mText += "<a href=\"mailto:" + a->realName() +" <" + a->email() + ">:" + mMailSubject + "\">"; | 689 | mText += "<a href=\"mailto:" + a->realName() +" <" + a->email() + ">:" + mMailSubject + "\">"; |
682 | if ( a->RSVP() ) { | 690 | if ( a->RSVP() ) { |
683 | ++a_count_nr; | 691 | ++a_count_nr; |
684 | mText += "<IMG src=\"" + iconPath + "\">"; | 692 | mText += "<IMG src=\"" + iconPath + "\">"; |
685 | } | 693 | } |
686 | else { | 694 | else { |
687 | ++a_count; | 695 | ++a_count; |
688 | mText += "<IMG src=\"" + NOiconPath + "\">"; | 696 | mText += "<IMG src=\"" + NOiconPath + "\">"; |
689 | } | 697 | } |
690 | mText += "</a>\n"; | 698 | mText += "</a>\n"; |
691 | } | 699 | } |
692 | } | 700 | } |
693 | if (a->status() != Attendee::NeedsAction ) | 701 | if (a->status() != Attendee::NeedsAction ) |
694 | mText +="[" + a->statusStr() + "] "; | 702 | mText +="[" + a->statusStr() + "] "; |
695 | if (a->role() == Attendee::Chair ) | 703 | if (a->role() == Attendee::Chair ) |
696 | mText +="(" + a->roleStr().left(1) + ".)"; | 704 | mText +="(" + a->roleStr().left(1) + ".)"; |
697 | } | 705 | } |
698 | mText.append("</li></ul>"); | 706 | mText.append("</li></ul>"); |
699 | if ( (a_count+a_count_nr) > 1 ) { | 707 | if ( (a_count+a_count_nr) > 1 ) { |
700 | mText += "<a href=\"mailto:ALL\">"; | 708 | mText += "<a href=\"mailto:ALL\">"; |
701 | mText += i18n( "Mail to all" ); | 709 | mText += i18n( "Mail to all" ); |
702 | mText += "</a> ( "; | 710 | mText += "</a> ( "; |
703 | mText += "<IMG src=\"" + iconPath + "\">"; | 711 | mText += "<IMG src=\"" + iconPath + "\">"; |
704 | mText += i18n( " and " ); | 712 | mText += i18n( " and " ); |
705 | mText += "<IMG src=\"" + NOiconPath + "\"> )"; | 713 | mText += "<IMG src=\"" + NOiconPath + "\"> )"; |
706 | mText += "<br>\n"; | 714 | mText += "<br>\n"; |
707 | 715 | ||
708 | 716 | ||
709 | } | 717 | } |
710 | if ( a_count_nr > 1 ) { | 718 | if ( a_count_nr > 1 ) { |
711 | mText += "<a href=\"mailto:RSVP\">"; | 719 | mText += "<a href=\"mailto:RSVP\">"; |
712 | mText += i18n( "Mail to selected" ); | 720 | mText += i18n( "Mail to selected" ); |
713 | mText += "</a> ( "; | 721 | mText += "</a> ( "; |
714 | mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); | 722 | mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); |
715 | mText += "<br>\n"; | 723 | mText += "<br>\n"; |
diff --git a/korganizer/koincidenceeditor.cpp b/korganizer/koincidenceeditor.cpp index 9bc0302..236f6f9 100644 --- a/korganizer/koincidenceeditor.cpp +++ b/korganizer/koincidenceeditor.cpp | |||
@@ -1,185 +1,190 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qtooltip.h> | 24 | #include <qtooltip.h> |
25 | #include <qframe.h> | 25 | #include <qframe.h> |
26 | #include <qpixmap.h> | 26 | #include <qpixmap.h> |
27 | #include <qlayout.h> | 27 | #include <qlayout.h> |
28 | #include <qwidgetstack.h> | 28 | #include <qwidgetstack.h> |
29 | #include <qdatetime.h> | 29 | #include <qdatetime.h> |
30 | #include <qdir.h> | 30 | #include <qdir.h> |
31 | 31 | ||
32 | #include <kdebug.h> | 32 | #include <kdebug.h> |
33 | #include <klocale.h> | 33 | #include <klocale.h> |
34 | #include <kstandarddirs.h> | 34 | #include <kstandarddirs.h> |
35 | #include <kmessagebox.h> | 35 | #include <kmessagebox.h> |
36 | #include <kfiledialog.h> | 36 | #include <kfiledialog.h> |
37 | 37 | ||
38 | #include <libkdepim/categoryselectdialog.h> | 38 | #include <libkdepim/categoryselectdialog.h> |
39 | #include <libkdepim/kinputdialog.h> | 39 | #include <libkdepim/kinputdialog.h> |
40 | 40 | ||
41 | #include <libkcal/calendarlocal.h> | 41 | #include <libkcal/calendarlocal.h> |
42 | #include <libkcal/icalformat.h> | 42 | #include <libkcal/icalformat.h> |
43 | 43 | ||
44 | #include "koprefs.h" | 44 | #include "koprefs.h" |
45 | 45 | ||
46 | #include "koincidenceeditor.h" | 46 | #include "koincidenceeditor.h" |
47 | 47 | ||
48 | KOIncidenceEditor::KOIncidenceEditor( const QString &caption, | 48 | KOIncidenceEditor::KOIncidenceEditor( const QString &caption, |
49 | Calendar *calendar, QWidget *parent ) : | 49 | Calendar *calendar, QWidget *parent ) : |
50 | KDialogBase( Tabbed, caption, Ok | Apply | Cancel |/* Default | */User1, Ok, | 50 | KDialogBase( Tabbed, caption, Ok | Apply | Cancel |/* Default | */User1, Ok, |
51 | parent, caption, true, false ), | 51 | parent, caption, true, false ), |
52 | mSaveTemplateDialog( 0 ) | 52 | mSaveTemplateDialog( 0 ) |
53 | { | 53 | { |
54 | mCalendar = calendar; | 54 | mCalendar = calendar; |
55 | 55 | ||
56 | setButtonText( Default, i18n("Template...") ); | 56 | setButtonText( Default, i18n("Template...") ); |
57 | 57 | ||
58 | QString saveTemplateText; | 58 | QString saveTemplateText; |
59 | // if ( KOPrefs::instance()->mCompactDialogs ) { | 59 | // if ( KOPrefs::instance()->mCompactDialogs ) { |
60 | // showButton( User1, false ); | 60 | // showButton( User1, false ); |
61 | // showButton( Apply, false ); | 61 | // showButton( Apply, false ); |
62 | // } else { | 62 | // } else { |
63 | showButton( Apply, false ); | 63 | showButton( Apply, false ); |
64 | saveTemplateText = i18n("Ok+Agenda"); | 64 | saveTemplateText = i18n("Ok+Agenda"); |
65 | // } | 65 | // } |
66 | setButtonText( User1, saveTemplateText ); | 66 | setButtonText( User1, saveTemplateText ); |
67 | 67 | ||
68 | //mCategoryDialog = new KPIM::CategorySelectDialog( KOPrefs::instance(), this ); | 68 | //mCategoryDialog = new KPIM::CategorySelectDialog( KOPrefs::instance(), this ); |
69 | // KOGlobals::fitDialogToScreen( mCategoryDialog ); | 69 | // KOGlobals::fitDialogToScreen( mCategoryDialog ); |
70 | 70 | ||
71 | //connect(mCategoryDialog,SIGNAL(editCategories()),SIGNAL(editCategories())); | 71 | //connect(mCategoryDialog,SIGNAL(editCategories()),SIGNAL(editCategories())); |
72 | 72 | ||
73 | //connect( this, SIGNAL( defaultClicked() ), SLOT( slotLoadTemplate() ) ); | 73 | //connect( this, SIGNAL( defaultClicked() ), SLOT( slotLoadTemplate() ) ); |
74 | // connect( this, SIGNAL( user1Clicked() ), SLOT( slotSaveTemplate() ) ); | 74 | // connect( this, SIGNAL( user1Clicked() ), SLOT( slotSaveTemplate() ) ); |
75 | connect( this, SIGNAL( user1Clicked() ), SLOT( slotShowIncidence() ) ); | 75 | connect( this, SIGNAL( user1Clicked() ), SLOT( slotShowIncidence() ) ); |
76 | } | 76 | } |
77 | 77 | ||
78 | KOIncidenceEditor::~KOIncidenceEditor() | 78 | KOIncidenceEditor::~KOIncidenceEditor() |
79 | { | 79 | { |
80 | //delete mCategoryDialog; | 80 | //delete mCategoryDialog; |
81 | } | 81 | } |
82 | 82 | ||
83 | void KOIncidenceEditor::setupAttendeesTab() | 83 | void KOIncidenceEditor::setupAttendeesTab() |
84 | { | 84 | { |
85 | QFrame *topFrame = addPage(i18n("Attendees")); | 85 | QFrame *topFrame = addPage(i18n("Attendees")); |
86 | 86 | ||
87 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 87 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
88 | 88 | ||
89 | mDetails = new KOEditorDetails(spacingHint()-2,topFrame); | 89 | mDetails = new KOEditorDetails(spacingHint()-2,topFrame); |
90 | topLayout->addWidget(mDetails); | 90 | topLayout->addWidget(mDetails); |
91 | } | 91 | } |
92 | 92 | ||
93 | void KOIncidenceEditor::alarmWarning() | ||
94 | { | ||
95 | KMessageBox::information( 0, i18n("The alarm for this calendar\nis currently disabled!\nEnable it in resource settings."), i18n("Alarm disabled warning")); | ||
96 | |||
97 | } | ||
93 | 98 | ||
94 | void KOIncidenceEditor::slotApply() | 99 | void KOIncidenceEditor::slotApply() |
95 | { | 100 | { |
96 | processInput( false ); | 101 | processInput( false ); |
97 | } | 102 | } |
98 | void KOIncidenceEditor::accept() | 103 | void KOIncidenceEditor::accept() |
99 | { | 104 | { |
100 | slotOk(); | 105 | slotOk(); |
101 | } | 106 | } |
102 | void KOIncidenceEditor::slotOk() | 107 | void KOIncidenceEditor::slotOk() |
103 | { | 108 | { |
104 | if ( processInput( false ) ) QDialog::accept(); | 109 | if ( processInput( false ) ) QDialog::accept(); |
105 | } | 110 | } |
106 | 111 | ||
107 | void KOIncidenceEditor::updateCategoryConfig() | 112 | void KOIncidenceEditor::updateCategoryConfig() |
108 | { | 113 | { |
109 | qDebug("KOIncidenceEditor::updateCategoryConfig() is dead! "); | 114 | qDebug("KOIncidenceEditor::updateCategoryConfig() is dead! "); |
110 | //mCategoryDialog->updateCategoryConfig(); | 115 | //mCategoryDialog->updateCategoryConfig(); |
111 | } | 116 | } |
112 | 117 | ||
113 | void KOIncidenceEditor::slotCancel() | 118 | void KOIncidenceEditor::slotCancel() |
114 | { | 119 | { |
115 | reject(); | 120 | reject(); |
116 | } | 121 | } |
117 | 122 | ||
118 | void KOIncidenceEditor::slotLoadTemplate() | 123 | void KOIncidenceEditor::slotLoadTemplate() |
119 | { | 124 | { |
120 | kdDebug() << "KOIncidenceEditor::loadTemplate()" << endl; | 125 | kdDebug() << "KOIncidenceEditor::loadTemplate()" << endl; |
121 | } | 126 | } |
122 | void KOIncidenceEditor::slotShowIncidence() | 127 | void KOIncidenceEditor::slotShowIncidence() |
123 | { | 128 | { |
124 | 129 | ||
125 | if ( processInput(true ) ) { | 130 | if ( processInput(true ) ) { |
126 | accept(); | 131 | accept(); |
127 | } | 132 | } |
128 | } | 133 | } |
129 | 134 | ||
130 | void KOIncidenceEditor::slotSaveTemplate() | 135 | void KOIncidenceEditor::slotSaveTemplate() |
131 | { | 136 | { |
132 | kdDebug() << "KOIncidenceEditor::saveTemplate()" << endl; | 137 | kdDebug() << "KOIncidenceEditor::saveTemplate()" << endl; |
133 | } | 138 | } |
134 | 139 | ||
135 | void KOIncidenceEditor::createSaveTemplateDialog( SaveTemplateDialog::IncidenceType type ) | 140 | void KOIncidenceEditor::createSaveTemplateDialog( SaveTemplateDialog::IncidenceType type ) |
136 | { | 141 | { |
137 | if ( !mSaveTemplateDialog ) { | 142 | if ( !mSaveTemplateDialog ) { |
138 | mSaveTemplateDialog = new SaveTemplateDialog( type, this ); | 143 | mSaveTemplateDialog = new SaveTemplateDialog( type, this ); |
139 | connect( mSaveTemplateDialog, SIGNAL( templateSelected( const QString & ) ), | 144 | connect( mSaveTemplateDialog, SIGNAL( templateSelected( const QString & ) ), |
140 | SLOT( saveTemplate( const QString & ) ) ); | 145 | SLOT( saveTemplate( const QString & ) ) ); |
141 | } | 146 | } |
142 | mSaveTemplateDialog->show(); | 147 | mSaveTemplateDialog->show(); |
143 | mSaveTemplateDialog->raise(); | 148 | mSaveTemplateDialog->raise(); |
144 | } | 149 | } |
145 | 150 | ||
146 | void KOIncidenceEditor::saveAsTemplate( Incidence *incidence, | 151 | void KOIncidenceEditor::saveAsTemplate( Incidence *incidence, |
147 | const QString &templateName ) | 152 | const QString &templateName ) |
148 | { | 153 | { |
149 | CalendarLocal cal; | 154 | CalendarLocal cal; |
150 | cal.addIncidence( incidence ); | 155 | cal.addIncidence( incidence ); |
151 | ICalFormat format; | 156 | ICalFormat format; |
152 | format.save( &cal, templateName ); | 157 | format.save( &cal, templateName ); |
153 | } | 158 | } |
154 | 159 | ||
155 | QString KOIncidenceEditor::loadTemplate( Calendar *cal, const QString &type, | 160 | QString KOIncidenceEditor::loadTemplate( Calendar *cal, const QString &type, |
156 | const QStringList &templates ) | 161 | const QStringList &templates ) |
157 | { | 162 | { |
158 | // bool ok = false; | 163 | // bool ok = false; |
159 | // QString templateName = KInputDialog::getItem( i18n("Load Template"), | 164 | // QString templateName = KInputDialog::getItem( i18n("Load Template"), |
160 | // i18n("Select a template to load:"), templates, 0, &ok ); | 165 | // i18n("Select a template to load:"), templates, 0, &ok ); |
161 | // if ( !ok || templateName.isEmpty() ) return QString::null; | 166 | // if ( !ok || templateName.isEmpty() ) return QString::null; |
162 | 167 | ||
163 | // QString fileName = locateLocal( "data", "korganizer/templates/" + type + "/" + | 168 | // QString fileName = locateLocal( "data", "korganizer/templates/" + type + "/" + |
164 | // templateName ); | 169 | // templateName ); |
165 | // fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this ); | 170 | // fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this ); |
166 | 171 | ||
167 | // QString fileName;// =locateLocal( "templates", incidence->type() ); | 172 | // QString fileName;// =locateLocal( "templates", incidence->type() ); |
168 | // fileName=KFileDialog:: getOpenFileName( fileName, "Load "+incidence()->type(), this ); | 173 | // fileName=KFileDialog:: getOpenFileName( fileName, "Load "+incidence()->type(), this ); |
169 | // if ( fileNamelength() == 0) | 174 | // if ( fileNamelength() == 0) |
170 | // return QString::null; | 175 | // return QString::null; |
171 | // if ( fileName.isEmpty() ) { | 176 | // if ( fileName.isEmpty() ) { |
172 | // KMessageBox::error( this, i18n("Unable to find template '%1'.") | 177 | // KMessageBox::error( this, i18n("Unable to find template '%1'.") |
173 | // .arg( fileName ) ); | 178 | // .arg( fileName ) ); |
174 | // return QString::null; | 179 | // return QString::null; |
175 | // } else { | 180 | // } else { |
176 | // ICalFormat format; | 181 | // ICalFormat format; |
177 | // if ( !format.load( cal, fileName ) ) { | 182 | // if ( !format.load( cal, fileName ) ) { |
178 | // KMessageBox::error( this, i18n("Error loading template file '%1'.") | 183 | // KMessageBox::error( this, i18n("Error loading template file '%1'.") |
179 | // .arg( fileName ) ); | 184 | // .arg( fileName ) ); |
180 | // return QString::null; | 185 | // return QString::null; |
181 | // } | 186 | // } |
182 | // } | 187 | // } |
183 | 188 | ||
184 | return ""; | 189 | return ""; |
185 | } | 190 | } |
diff --git a/korganizer/koincidenceeditor.h b/korganizer/koincidenceeditor.h index bfd6cc6..2e4bbf8 100644 --- a/korganizer/koincidenceeditor.h +++ b/korganizer/koincidenceeditor.h | |||
@@ -1,105 +1,106 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | #ifndef KOINCIDENCEEDITOR_H | 23 | #ifndef KOINCIDENCEEDITOR_H |
24 | #define KOINCIDENCEEDITOR_H | 24 | #define KOINCIDENCEEDITOR_H |
25 | 25 | ||
26 | #include <kdialogbase.h> | 26 | #include <kdialogbase.h> |
27 | 27 | ||
28 | #include <libkcal/calendar.h> | 28 | #include <libkcal/calendar.h> |
29 | 29 | ||
30 | #include "koeditordetails.h" | 30 | #include "koeditordetails.h" |
31 | #include "savetemplatedialog.h" | 31 | #include "savetemplatedialog.h" |
32 | 32 | ||
33 | class QDateTime; | 33 | class QDateTime; |
34 | namespace KPIM { class CategorySelectDialog; } | 34 | namespace KPIM { class CategorySelectDialog; } |
35 | 35 | ||
36 | using namespace KCal; | 36 | using namespace KCal; |
37 | 37 | ||
38 | /** | 38 | /** |
39 | This is the base class for the calendar component editors. | 39 | This is the base class for the calendar component editors. |
40 | */ | 40 | */ |
41 | class KOIncidenceEditor : public KDialogBase | 41 | class KOIncidenceEditor : public KDialogBase |
42 | { | 42 | { |
43 | Q_OBJECT | 43 | Q_OBJECT |
44 | public: | 44 | public: |
45 | /** | 45 | /** |
46 | Construct new IncidenceEditor. | 46 | Construct new IncidenceEditor. |
47 | */ | 47 | */ |
48 | KOIncidenceEditor( const QString &caption, Calendar *calendar, | 48 | KOIncidenceEditor( const QString &caption, Calendar *calendar, |
49 | QWidget *parent ); | 49 | QWidget *parent ); |
50 | virtual ~KOIncidenceEditor(); | 50 | virtual ~KOIncidenceEditor(); |
51 | 51 | ||
52 | /** Initialize editor. This function creates the tab widgets. */ | 52 | /** Initialize editor. This function creates the tab widgets. */ |
53 | virtual void init() = 0; | 53 | virtual void init() = 0; |
54 | void accept(); | 54 | void accept(); |
55 | virtual void setCategories( QString )= 0; | 55 | virtual void setCategories( QString )= 0; |
56 | 56 | ||
57 | virtual void reload() = 0; | 57 | virtual void reload() = 0; |
58 | 58 | ||
59 | public slots: | 59 | public slots: |
60 | void updateCategoryConfig(); | 60 | void updateCategoryConfig(); |
61 | 61 | ||
62 | signals: | 62 | signals: |
63 | void editCategories(); | 63 | void editCategories(); |
64 | void showAgendaView( bool ); | 64 | void showAgendaView( bool ); |
65 | void dialogClose( Incidence * ); | 65 | void dialogClose( Incidence * ); |
66 | void jumpToTime( const QDate & ); | 66 | void jumpToTime( const QDate & ); |
67 | 67 | ||
68 | protected slots: | 68 | protected slots: |
69 | void alarmWarning(); | ||
69 | void slotApply(); | 70 | void slotApply(); |
70 | void slotOk(); | 71 | void slotOk(); |
71 | void slotCancel(); | 72 | void slotCancel(); |
72 | void slotShowIncidence(); | 73 | void slotShowIncidence(); |
73 | 74 | ||
74 | virtual void slotLoadTemplate(); | 75 | virtual void slotLoadTemplate(); |
75 | virtual void slotSaveTemplate(); | 76 | virtual void slotSaveTemplate(); |
76 | 77 | ||
77 | virtual void saveTemplate( const QString & ) = 0; | 78 | virtual void saveTemplate( const QString & ) = 0; |
78 | 79 | ||
79 | protected: | 80 | protected: |
80 | void setupAttendeesTab(); | 81 | void setupAttendeesTab(); |
81 | 82 | ||
82 | void createSaveTemplateDialog( SaveTemplateDialog::IncidenceType ); | 83 | void createSaveTemplateDialog( SaveTemplateDialog::IncidenceType ); |
83 | 84 | ||
84 | QString loadTemplate( Calendar *cal, const QString &type, | 85 | QString loadTemplate( Calendar *cal, const QString &type, |
85 | const QStringList &templates ); | 86 | const QStringList &templates ); |
86 | void saveAsTemplate( Incidence *, const QString &name ); | 87 | void saveAsTemplate( Incidence *, const QString &name ); |
87 | 88 | ||
88 | /** | 89 | /** |
89 | Process user input and create or update event. Returns false if input is invalid. | 90 | Process user input and create or update event. Returns false if input is invalid. |
90 | */ | 91 | */ |
91 | virtual bool processInput( bool emitTime ) { return false; } | 92 | virtual bool processInput( bool emitTime ) { return false; } |
92 | 93 | ||
93 | Calendar *mCalendar; | 94 | Calendar *mCalendar; |
94 | 95 | ||
95 | //KPIM::CategorySelectDialog *mCategoryDialog; | 96 | //KPIM::CategorySelectDialog *mCategoryDialog; |
96 | 97 | ||
97 | KOEditorDetails *mDetails; | 98 | KOEditorDetails *mDetails; |
98 | 99 | ||
99 | private: | 100 | private: |
100 | SaveTemplateDialog *mSaveTemplateDialog; | 101 | SaveTemplateDialog *mSaveTemplateDialog; |
101 | }; | 102 | }; |
102 | 103 | ||
103 | #endif | 104 | #endif |
104 | 105 | ||
105 | 106 | ||
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp index 682f83b..20a35d2 100644 --- a/korganizer/kotodoeditor.cpp +++ b/korganizer/kotodoeditor.cpp | |||
@@ -1,453 +1,457 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 1997, 1998 Preston Brown | 3 | Copyright (c) 1997, 1998 Preston Brown |
4 | Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify | 6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by | 7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2 of the License, or | 8 | the Free Software Foundation; either version 2 of the License, or |
9 | (at your option) any later version. | 9 | (at your option) any later version. |
10 | 10 | ||
11 | This program is distributed in the hope that it will be useful, | 11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. | 14 | GNU General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License | 16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software | 17 | along with this program; if not, write to the Free Software |
18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
19 | 19 | ||
20 | As a special exception, permission is given to link this program | 20 | As a special exception, permission is given to link this program |
21 | with any edition of Qt, and distribute the resulting executable, | 21 | with any edition of Qt, and distribute the resulting executable, |
22 | without including the source code for Qt in the source distribution. | 22 | without including the source code for Qt in the source distribution. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qframe.h> | 26 | #include <qframe.h> |
27 | #include <qpixmap.h> | 27 | #include <qpixmap.h> |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #include <qhbox.h> | 29 | #include <qhbox.h> |
30 | #include <qtimer.h> | ||
30 | #include <qdir.h> | 31 | #include <qdir.h> |
31 | #include <qdatetime.h> | 32 | #include <qdatetime.h> |
32 | #include <qapplication.h> | 33 | #include <qapplication.h> |
33 | #include <qtabwidget.h> | 34 | #include <qtabwidget.h> |
34 | 35 | ||
35 | #include <kiconloader.h> | 36 | #include <kiconloader.h> |
36 | #include <klocale.h> | 37 | #include <klocale.h> |
37 | #include <kfiledialog.h> | 38 | #include <kfiledialog.h> |
38 | #include <kstandarddirs.h> | 39 | #include <kstandarddirs.h> |
39 | #include <kmessagebox.h> | 40 | #include <kmessagebox.h> |
40 | 41 | ||
41 | #include <libkdepim/categoryselectdialog.h> | 42 | #include <libkdepim/categoryselectdialog.h> |
42 | #include <libkcal/calendarlocal.h> | 43 | #include <libkcal/calendarlocal.h> |
43 | #include <libkcal/calendarresources.h> | 44 | #include <libkcal/calendarresources.h> |
44 | #include <libkcal/resourcecalendar.h> | 45 | #include <libkcal/resourcecalendar.h> |
45 | #include <libkcal/icalformat.h> | 46 | #include <libkcal/icalformat.h> |
46 | #include <kresources/resourceselectdialog.h> | 47 | #include <kresources/resourceselectdialog.h> |
47 | #include <libkdepim/kdateedit.h> | 48 | #include <libkdepim/kdateedit.h> |
48 | 49 | ||
49 | #include "koprefs.h" | 50 | #include "koprefs.h" |
50 | #include "kolocationbox.h" | 51 | #include "kolocationbox.h" |
51 | 52 | ||
52 | #include "kotodoeditor.h" | 53 | #include "kotodoeditor.h" |
53 | extern int globalFlagBlockAgenda; | 54 | extern int globalFlagBlockAgenda; |
54 | 55 | ||
55 | KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : | 56 | KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : |
56 | KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent ) | 57 | KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent ) |
57 | { | 58 | { |
58 | mTodo = 0; | 59 | mTodo = 0; |
59 | mRelatedTodo = 0; | 60 | mRelatedTodo = 0; |
60 | findButton(User1)->hide(); | 61 | findButton(User1)->hide(); |
61 | init(); | 62 | init(); |
62 | if ( QApplication::desktop()->height() <= 240 ) | 63 | if ( QApplication::desktop()->height() <= 240 ) |
63 | hideButtons(); | 64 | hideButtons(); |
64 | } | 65 | } |
65 | 66 | ||
66 | KOTodoEditor::~KOTodoEditor() | 67 | KOTodoEditor::~KOTodoEditor() |
67 | { | 68 | { |
68 | emit dialogClose( mTodo ); | 69 | emit dialogClose( mTodo ); |
69 | } | 70 | } |
70 | 71 | ||
71 | void KOTodoEditor::init() | 72 | void KOTodoEditor::init() |
72 | { | 73 | { |
73 | setupGeneral(); | 74 | setupGeneral(); |
74 | setupAttendeesTab(); | 75 | setupAttendeesTab(); |
75 | setupRecurrence(); | 76 | setupRecurrence(); |
76 | connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence())); | 77 | connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence())); |
77 | mRecurrence->setDateTimeStr( i18n("<i>The recurrence is computed from the start datetime!</i>") ); | 78 | mRecurrence->setDateTimeStr( i18n("<i>The recurrence is computed from the start datetime!</i>") ); |
78 | connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), | 79 | connect(mGeneral,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), |
79 | mRecurrence,SLOT(setDefaultsDates(QDateTime,QDateTime))); | 80 | mRecurrence,SLOT(setDefaultsDates(QDateTime,QDateTime))); |
80 | } | 81 | } |
81 | void KOTodoEditor::setupRecurrence() | 82 | void KOTodoEditor::setupRecurrence() |
82 | { | 83 | { |
83 | QFrame *topFrame = addPage( i18n("Recurrence") ); | 84 | QFrame *topFrame = addPage( i18n("Recurrence") ); |
84 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); | 85 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); |
85 | 86 | ||
86 | mRecurrence = new KOEditorRecurrence( topFrame ); | 87 | mRecurrence = new KOEditorRecurrence( topFrame ); |
87 | topLayout->addWidget( mRecurrence ); | 88 | topLayout->addWidget( mRecurrence ); |
88 | } | 89 | } |
89 | 90 | ||
90 | void KOTodoEditor::setCategories( QString s ) | 91 | void KOTodoEditor::setCategories( QString s ) |
91 | { | 92 | { |
92 | mGeneral->setCategories(s); | 93 | mGeneral->setCategories(s); |
93 | } | 94 | } |
94 | void KOTodoEditor::setSecrecy( int sec ) | 95 | void KOTodoEditor::setSecrecy( int sec ) |
95 | { | 96 | { |
96 | mGeneral->setSecrecy( sec ); | 97 | mGeneral->setSecrecy( sec ); |
97 | } | 98 | } |
98 | void KOTodoEditor::reload() | 99 | void KOTodoEditor::reload() |
99 | { | 100 | { |
100 | if ( mTodo ) readTodo( mTodo ); | 101 | if ( mTodo ) readTodo( mTodo ); |
101 | } | 102 | } |
102 | 103 | ||
103 | void KOTodoEditor::setupGeneral() | 104 | void KOTodoEditor::setupGeneral() |
104 | { | 105 | { |
105 | mGeneral = new KOEditorGeneralTodo(this); | 106 | mGeneral = new KOEditorGeneralTodo(this); |
106 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); | 107 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); |
107 | 108 | ||
108 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); | 109 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); |
109 | //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)), | 110 | //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)), |
110 | // mGeneral,SLOT(setCategories(const QString &))); | 111 | // mGeneral,SLOT(setCategories(const QString &))); |
111 | 112 | ||
112 | if (KOPrefs::instance()->mCompactDialogs) { | 113 | if (KOPrefs::instance()->mCompactDialogs) { |
113 | QFrame *topFrame = addPage(i18n("General")); | 114 | QFrame *topFrame = addPage(i18n("General")); |
114 | 115 | ||
115 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 116 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
116 | if ( QApplication::desktop()->width() < 480 ) { | 117 | if ( QApplication::desktop()->width() < 480 ) { |
117 | topLayout->setMargin(marginHintSmall()); | 118 | topLayout->setMargin(marginHintSmall()); |
118 | topLayout->setSpacing(spacingHintSmall()); | 119 | topLayout->setSpacing(spacingHintSmall()); |
119 | } else { | 120 | } else { |
120 | topLayout->setMargin(marginHint()); | 121 | topLayout->setMargin(marginHint()); |
121 | topLayout->setSpacing(spacingHint()); | 122 | topLayout->setSpacing(spacingHint()); |
122 | } | 123 | } |
123 | topLayout->addStretch( 1 ); | 124 | topLayout->addStretch( 1 ); |
124 | mGeneral->initHeader(topFrame,topLayout); | 125 | mGeneral->initHeader(topFrame,topLayout); |
125 | topLayout->addStretch( 1 ); | 126 | topLayout->addStretch( 1 ); |
126 | mGeneral->initTime(topFrame,topLayout); | 127 | mGeneral->initTime(topFrame,topLayout); |
127 | topLayout->addStretch( 1 ); | 128 | topLayout->addStretch( 1 ); |
128 | mGeneral->initAlarm(topFrame,topLayout); | 129 | mGeneral->initAlarm(topFrame,topLayout); |
129 | topLayout->addStretch( 1 ); | 130 | topLayout->addStretch( 1 ); |
130 | mGeneral->enableAlarm( false ); | 131 | mGeneral->enableAlarm( false ); |
131 | 132 | ||
132 | 133 | ||
133 | QBoxLayout *priorityLayout; | 134 | QBoxLayout *priorityLayout; |
134 | if ( QApplication::desktop()->width() < 500 ) | 135 | if ( QApplication::desktop()->width() < 500 ) |
135 | priorityLayout = new QVBoxLayout( topLayout ); | 136 | priorityLayout = new QVBoxLayout( topLayout ); |
136 | else | 137 | else |
137 | priorityLayout = new QHBoxLayout( topLayout ); | 138 | priorityLayout = new QHBoxLayout( topLayout ); |
138 | QWidget* prioWidget = new QWidget (topFrame); | 139 | QWidget* prioWidget = new QWidget (topFrame); |
139 | priorityLayout->addWidget( prioWidget ); | 140 | priorityLayout->addWidget( prioWidget ); |
140 | QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); | 141 | QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); |
141 | 142 | ||
142 | 143 | ||
143 | QIconSet icon; | 144 | QIconSet icon; |
144 | if ( QApplication::desktop()->width() < 321 ) | 145 | if ( QApplication::desktop()->width() < 321 ) |
145 | icon = SmallIcon("fileimport16"); | 146 | icon = SmallIcon("fileimport16"); |
146 | else | 147 | else |
147 | icon = SmallIcon("fileimport"); | 148 | icon = SmallIcon("fileimport"); |
148 | QPushButton * loadTemplate = new QPushButton( prioWidget); | 149 | QPushButton * loadTemplate = new QPushButton( prioWidget); |
149 | loadTemplate->setIconSet (icon ) ; | 150 | loadTemplate->setIconSet (icon ) ; |
150 | int size = loadTemplate->sizeHint().height(); | 151 | int size = loadTemplate->sizeHint().height(); |
151 | loadTemplate->setFixedSize( size, size ); | 152 | loadTemplate->setFixedSize( size, size ); |
152 | if ( QApplication::desktop()->width() < 321 ) | 153 | if ( QApplication::desktop()->width() < 321 ) |
153 | icon = SmallIcon("fileexport16"); | 154 | icon = SmallIcon("fileexport16"); |
154 | else | 155 | else |
155 | icon = SmallIcon("fileexport"); | 156 | icon = SmallIcon("fileexport"); |
156 | QPushButton * saveTemplate = new QPushButton( prioWidget); | 157 | QPushButton * saveTemplate = new QPushButton( prioWidget); |
157 | saveTemplate->setIconSet (icon ) ; | 158 | saveTemplate->setIconSet (icon ) ; |
158 | saveTemplate->setFixedSize( size, size ); | 159 | saveTemplate->setFixedSize( size, size ); |
159 | 160 | ||
160 | priorityLayout2->addWidget(loadTemplate); | 161 | priorityLayout2->addWidget(loadTemplate); |
161 | priorityLayout2->addWidget(saveTemplate); | 162 | priorityLayout2->addWidget(saveTemplate); |
162 | mGeneral->initPriority(prioWidget,priorityLayout2); | 163 | mGeneral->initPriority(prioWidget,priorityLayout2); |
163 | mGeneral->initCategories( topFrame, priorityLayout ); | 164 | mGeneral->initCategories( topFrame, priorityLayout ); |
164 | topLayout->addStretch(1); | 165 | topLayout->addStretch(1); |
165 | 166 | ||
166 | QFrame *topFrame2 = addPage(i18n("Details")); | 167 | QFrame *topFrame2 = addPage(i18n("Details")); |
167 | 168 | ||
168 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); | 169 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); |
169 | topLayout2->setMargin(marginHint()); | 170 | topLayout2->setMargin(marginHint()); |
170 | topLayout2->setSpacing(spacingHint()); | 171 | topLayout2->setSpacing(spacingHint()); |
171 | 172 | ||
172 | QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); | 173 | QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); |
173 | mGeneral->initCompletion(topFrame2,completionLayout); | 174 | mGeneral->initCompletion(topFrame2,completionLayout); |
174 | 175 | ||
175 | 176 | ||
176 | mGeneral->initSecrecy( topFrame2, topLayout2 ); | 177 | mGeneral->initSecrecy( topFrame2, topLayout2 ); |
177 | mGeneral->initDescription(topFrame2,topLayout2); | 178 | mGeneral->initDescription(topFrame2,topLayout2); |
178 | 179 | ||
179 | // QHBox * hb = new QHBox ( topFrame2 ); | 180 | // QHBox * hb = new QHBox ( topFrame2 ); |
180 | // topLayout2->addWidget(hb); | 181 | // topLayout2->addWidget(hb); |
181 | // hb->setSpacing( 3 ); | 182 | // hb->setSpacing( 3 ); |
182 | 183 | ||
183 | connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); | 184 | connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); |
184 | connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); | 185 | connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); |
185 | 186 | ||
186 | } else { | 187 | } else { |
187 | QFrame *topFrame = addPage(i18n("General")); | 188 | QFrame *topFrame = addPage(i18n("General")); |
188 | 189 | ||
189 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 190 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
190 | topLayout->setSpacing(spacingHint()); | 191 | topLayout->setSpacing(spacingHint()); |
191 | 192 | ||
192 | mGeneral->initHeader(topFrame,topLayout); | 193 | mGeneral->initHeader(topFrame,topLayout); |
193 | mGeneral->initTime(topFrame,topLayout); | 194 | mGeneral->initTime(topFrame,topLayout); |
194 | mGeneral->initStatus(topFrame,topLayout); | 195 | mGeneral->initStatus(topFrame,topLayout); |
195 | QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); | 196 | QBoxLayout *alarmLineLayout = new QHBoxLayout(topLayout); |
196 | mGeneral->initAlarm(topFrame,alarmLineLayout); | 197 | mGeneral->initAlarm(topFrame,alarmLineLayout); |
197 | mGeneral->initDescription(topFrame,topLayout); | 198 | mGeneral->initDescription(topFrame,topLayout); |
198 | QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); | 199 | QBoxLayout *detailsLayout = new QHBoxLayout(topLayout); |
199 | mGeneral->initCategories( topFrame, detailsLayout ); | 200 | mGeneral->initCategories( topFrame, detailsLayout ); |
200 | mGeneral->initSecrecy( topFrame, detailsLayout ); | 201 | mGeneral->initSecrecy( topFrame, detailsLayout ); |
201 | } | 202 | } |
202 | mGeneral->finishSetup(); | 203 | mGeneral->finishSetup(); |
203 | 204 | ||
204 | } | 205 | } |
205 | 206 | ||
206 | void KOTodoEditor::editTodo(Todo *todo, bool editDescription) | 207 | void KOTodoEditor::editTodo(Todo *todo, bool editDescription) |
207 | { | 208 | { |
208 | //init(); | 209 | //init(); |
209 | 210 | ||
210 | mTodo = todo; | 211 | mTodo = todo; |
211 | readTodo(mTodo); | 212 | readTodo(mTodo); |
212 | if ( editDescription ) { | 213 | if ( editDescription ) { |
213 | showPage( 1 ); | 214 | showPage( 1 ); |
214 | mGeneral->setFocusOn( 1 ); | 215 | mGeneral->setFocusOn( 1 ); |
215 | } else { | 216 | } else { |
216 | showPage( 0 ); | 217 | showPage( 0 ); |
217 | mGeneral->setFocusOn( 2 ); | 218 | mGeneral->setFocusOn( 2 ); |
218 | } | 219 | } |
219 | checkRecurrence(); | 220 | checkRecurrence(); |
220 | } | 221 | } |
221 | 222 | ||
222 | void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) | 223 | void KOTodoEditor::newTodo(QDateTime due,Todo *relatedTodo,bool allDay) |
223 | { | 224 | { |
224 | //init(); | 225 | //init(); |
225 | 226 | ||
226 | mTodo = 0; | 227 | mTodo = 0; |
227 | setDefaults(due,relatedTodo,allDay); | 228 | setDefaults(due,relatedTodo,allDay); |
228 | } | 229 | } |
229 | 230 | ||
230 | void KOTodoEditor::loadDefaults() | 231 | void KOTodoEditor::loadDefaults() |
231 | { | 232 | { |
232 | setDefaults(QDateTime::currentDateTime().addDays(7),0,false); | 233 | setDefaults(QDateTime::currentDateTime().addDays(7),0,false); |
233 | } | 234 | } |
234 | 235 | ||
235 | bool KOTodoEditor::processInput( bool emitTime ) | 236 | bool KOTodoEditor::processInput( bool emitTime ) |
236 | { | 237 | { |
237 | if (!validateInput()) return false; | 238 | if (!validateInput()) return false; |
238 | 239 | ||
239 | Todo *todo = 0; | 240 | Todo *todo = 0; |
240 | 241 | ||
241 | if (mTodo) todo = mTodo; | 242 | if (mTodo) todo = mTodo; |
242 | else { | 243 | else { |
243 | todo = new Todo; | 244 | todo = new Todo; |
244 | todo->setOrganizer(KOPrefs::instance()->email()); | 245 | todo->setOrganizer(KOPrefs::instance()->email()); |
245 | } | 246 | } |
246 | 247 | ||
247 | writeTodo(todo); | 248 | writeTodo(todo); |
248 | if ( emitTime ) { | 249 | if ( emitTime ) { |
249 | globalFlagBlockAgenda = 1; | 250 | globalFlagBlockAgenda = 1; |
250 | emit showAgendaView( false ); | 251 | emit showAgendaView( false ); |
251 | if ( todo->hasDueDate() ) | 252 | if ( todo->hasDueDate() ) |
252 | emit jumpToTime( todo->dtDue().date() ); | 253 | emit jumpToTime( todo->dtDue().date() ); |
253 | globalFlagBlockAgenda = 2; | 254 | globalFlagBlockAgenda = 2; |
254 | } | 255 | } |
255 | if (mTodo) { | 256 | if (mTodo) { |
256 | todo->setRevision(todo->revision()+1); | 257 | todo->setRevision(todo->revision()+1); |
257 | emit todoChanged(todo); | 258 | emit todoChanged(todo); |
258 | } else { | 259 | } else { |
259 | mCalendar->addTodo(todo); | 260 | mCalendar->addTodo(todo); |
260 | mTodo = todo; | 261 | mTodo = todo; |
261 | emit todoAdded(todo); | 262 | emit todoAdded(todo); |
263 | if ( todo->isAlarmEnabled () && !todo->alarmEnabled () ) { | ||
264 | QTimer::singleShot( 0, this, SLOT ( alarmWarning() ) ); | ||
265 | } | ||
262 | } | 266 | } |
263 | 267 | ||
264 | return true; | 268 | return true; |
265 | } | 269 | } |
266 | 270 | ||
267 | void KOTodoEditor::deleteTodo() | 271 | void KOTodoEditor::deleteTodo() |
268 | { | 272 | { |
269 | if (mTodo) { | 273 | if (mTodo) { |
270 | if (KOPrefs::instance()->mConfirm) { | 274 | if (KOPrefs::instance()->mConfirm) { |
271 | switch (msgItemDelete()) { | 275 | switch (msgItemDelete()) { |
272 | case KMessageBox::Continue: // OK | 276 | case KMessageBox::Continue: // OK |
273 | emit todoToBeDeleted(mTodo); | 277 | emit todoToBeDeleted(mTodo); |
274 | emit dialogClose(mTodo); | 278 | emit dialogClose(mTodo); |
275 | mCalendar->deleteTodo(mTodo); | 279 | mCalendar->deleteTodo(mTodo); |
276 | emit todoDeleted(); | 280 | emit todoDeleted(); |
277 | reject(); | 281 | reject(); |
278 | break; | 282 | break; |
279 | } | 283 | } |
280 | } | 284 | } |
281 | else { | 285 | else { |
282 | emit todoToBeDeleted(mTodo); | 286 | emit todoToBeDeleted(mTodo); |
283 | emit dialogClose(mTodo); | 287 | emit dialogClose(mTodo); |
284 | mCalendar->deleteTodo(mTodo); | 288 | mCalendar->deleteTodo(mTodo); |
285 | emit todoDeleted(); | 289 | emit todoDeleted(); |
286 | reject(); | 290 | reject(); |
287 | } | 291 | } |
288 | } else { | 292 | } else { |
289 | reject(); | 293 | reject(); |
290 | } | 294 | } |
291 | } | 295 | } |
292 | 296 | ||
293 | void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) | 297 | void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) |
294 | { | 298 | { |
295 | mRelatedTodo = relatedEvent; | 299 | mRelatedTodo = relatedEvent; |
296 | 300 | ||
297 | mGeneral->setDefaults(due,allDay); | 301 | mGeneral->setDefaults(due,allDay); |
298 | mDetails->setDefaults(); | 302 | mDetails->setDefaults(); |
299 | showPage( 0 ); | 303 | showPage( 0 ); |
300 | if ( mRelatedTodo ) { | 304 | if ( mRelatedTodo ) { |
301 | mGeneral->fillCalCombo(mRelatedTodo->calID() ); | 305 | mGeneral->fillCalCombo(mRelatedTodo->calID() ); |
302 | mGeneral->setCategories (mRelatedTodo->categoriesStr ()); | 306 | mGeneral->setCategories (mRelatedTodo->categoriesStr ()); |
303 | mGeneral->setSecrecy (mRelatedTodo->secrecy ()); | 307 | mGeneral->setSecrecy (mRelatedTodo->secrecy ()); |
304 | if ( mRelatedTodo->priority() < 3 ) | 308 | if ( mRelatedTodo->priority() < 3 ) |
305 | mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1); | 309 | mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1); |
306 | mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); | 310 | mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); |
307 | int len = mRelatedTodo->summary().length(); | 311 | int len = mRelatedTodo->summary().length(); |
308 | mGeneral->mSummaryEdit->lineEdit()->setFocus(); | 312 | mGeneral->mSummaryEdit->lineEdit()->setFocus(); |
309 | mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); | 313 | mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); |
310 | mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); | 314 | mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); |
311 | 315 | ||
312 | } else | 316 | } else |
313 | mGeneral->setFocusOn( 2 ); | 317 | mGeneral->setFocusOn( 2 ); |
314 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); | 318 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); |
315 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); | 319 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); |
316 | } | 320 | } |
317 | void KOTodoEditor::checkRecurrence() | 321 | void KOTodoEditor::checkRecurrence() |
318 | { | 322 | { |
319 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { | 323 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { |
320 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); | 324 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); |
321 | 325 | ||
322 | if ( mTodo ) | 326 | if ( mTodo ) |
323 | mRecurrence->readEvent( mTodo ); | 327 | mRecurrence->readEvent( mTodo ); |
324 | else { | 328 | else { |
325 | bool time = mGeneral->mTimeButton->isChecked(); | 329 | bool time = mGeneral->mTimeButton->isChecked(); |
326 | QDateTime from,to; | 330 | QDateTime from,to; |
327 | if ( time ) { | 331 | if ( time ) { |
328 | to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; | 332 | to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; |
329 | from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; | 333 | from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; |
330 | } else { | 334 | } else { |
331 | to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; | 335 | to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; |
332 | from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; | 336 | from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; |
333 | } | 337 | } |
334 | if ( to < from ) | 338 | if ( to < from ) |
335 | to = from; | 339 | to = from; |
336 | mRecurrence->setDefaults(from,to); | 340 | mRecurrence->setDefaults(from,to); |
337 | } | 341 | } |
338 | } else { | 342 | } else { |
339 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); | 343 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); |
340 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); | 344 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); |
341 | } | 345 | } |
342 | } | 346 | } |
343 | void KOTodoEditor::readTodo(Todo *todo) | 347 | void KOTodoEditor::readTodo(Todo *todo) |
344 | { | 348 | { |
345 | mGeneral->readTodo(todo); | 349 | mGeneral->readTodo(todo); |
346 | mDetails->readEvent(todo); | 350 | mDetails->readEvent(todo); |
347 | mRelatedTodo = 0;//todo->relatedTo(); | 351 | mRelatedTodo = 0;//todo->relatedTo(); |
348 | // categories | 352 | // categories |
349 | // mCategoryDialog->setSelected(todo->categories()); | 353 | // mCategoryDialog->setSelected(todo->categories()); |
350 | 354 | ||
351 | // We should handle read-only events here. | 355 | // We should handle read-only events here. |
352 | } | 356 | } |
353 | 357 | ||
354 | void KOTodoEditor::writeTodo(Todo *event) | 358 | void KOTodoEditor::writeTodo(Todo *event) |
355 | { | 359 | { |
356 | bool maybeComputeRecurrenceTime = false; | 360 | bool maybeComputeRecurrenceTime = false; |
357 | if( event->hasRecurrenceID() && event->percentComplete() < 100) | 361 | if( event->hasRecurrenceID() && event->percentComplete() < 100) |
358 | maybeComputeRecurrenceTime = true; | 362 | maybeComputeRecurrenceTime = true; |
359 | event->setHasRecurrenceID( false ); | 363 | event->setHasRecurrenceID( false ); |
360 | mGeneral->writeTodo(event); | 364 | mGeneral->writeTodo(event); |
361 | mDetails->writeEvent(event); | 365 | mDetails->writeEvent(event); |
362 | 366 | ||
363 | // set related event, i.e. parent to-do in this case. | 367 | // set related event, i.e. parent to-do in this case. |
364 | if (mRelatedTodo) { | 368 | if (mRelatedTodo) { |
365 | event->setRelatedTo(mRelatedTodo); | 369 | event->setRelatedTo(mRelatedTodo); |
366 | } | 370 | } |
367 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { | 371 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { |
368 | mRecurrence->writeEvent(event); | 372 | mRecurrence->writeEvent(event); |
369 | if ( event->doesRecur() ) { | 373 | if ( event->doesRecur() ) { |
370 | int addSec = -1 ; | 374 | int addSec = -1 ; |
371 | if ( maybeComputeRecurrenceTime && event->percentComplete() == 100 ) | 375 | if ( maybeComputeRecurrenceTime && event->percentComplete() == 100 ) |
372 | addSec = 1; | 376 | addSec = 1; |
373 | event->setRecurrenceID( event->dtStart().addSecs( addSec ) ); | 377 | event->setRecurrenceID( event->dtStart().addSecs( addSec ) ); |
374 | event->setRecurDates(); | 378 | event->setRecurDates(); |
375 | } else { | 379 | } else { |
376 | event->setHasRecurrenceID( false ); | 380 | event->setHasRecurrenceID( false ); |
377 | } | 381 | } |
378 | } else { | 382 | } else { |
379 | event->setHasRecurrenceID( false ); | 383 | event->setHasRecurrenceID( false ); |
380 | if ( event->doesRecur() ) | 384 | if ( event->doesRecur() ) |
381 | event->recurrence()->unsetRecurs(); | 385 | event->recurrence()->unsetRecurs(); |
382 | } | 386 | } |
383 | } | 387 | } |
384 | 388 | ||
385 | bool KOTodoEditor::validateInput() | 389 | bool KOTodoEditor::validateInput() |
386 | { | 390 | { |
387 | if (!mGeneral->validateInput()) return false; | 391 | if (!mGeneral->validateInput()) return false; |
388 | if (!mDetails->validateInput()) return false; | 392 | if (!mDetails->validateInput()) return false; |
389 | return true; | 393 | return true; |
390 | } | 394 | } |
391 | 395 | ||
392 | int KOTodoEditor::msgItemDelete() | 396 | int KOTodoEditor::msgItemDelete() |
393 | { | 397 | { |
394 | return KMessageBox::warningContinueCancel(this, | 398 | return KMessageBox::warningContinueCancel(this, |
395 | i18n("This item will be permanently deleted."), | 399 | i18n("This item will be permanently deleted."), |
396 | i18n("KOrganizer Confirmation"),i18n("Delete")); | 400 | i18n("KOrganizer Confirmation"),i18n("Delete")); |
397 | } | 401 | } |
398 | 402 | ||
399 | void KOTodoEditor::modified (int modification) | 403 | void KOTodoEditor::modified (int modification) |
400 | { | 404 | { |
401 | if (modification == KOGlobals::CATEGORY_MODIFIED || | 405 | if (modification == KOGlobals::CATEGORY_MODIFIED || |
402 | KOGlobals::UNKNOWN_MODIFIED == modification ) | 406 | KOGlobals::UNKNOWN_MODIFIED == modification ) |
403 | // mCategoryDialog->setSelected (mTodo->categories ()); | 407 | // mCategoryDialog->setSelected (mTodo->categories ()); |
404 | mGeneral->modified (mTodo, modification); | 408 | mGeneral->modified (mTodo, modification); |
405 | 409 | ||
406 | } | 410 | } |
407 | 411 | ||
408 | void KOTodoEditor::slotLoadTemplate() | 412 | void KOTodoEditor::slotLoadTemplate() |
409 | { | 413 | { |
410 | 414 | ||
411 | QString fileName =locateLocal( "templates", "todos" ); | 415 | QString fileName =locateLocal( "templates", "todos" ); |
412 | QDir t_dir; | 416 | QDir t_dir; |
413 | if ( !t_dir.exists(fileName) ) | 417 | if ( !t_dir.exists(fileName) ) |
414 | t_dir.mkdir ( fileName ); | 418 | t_dir.mkdir ( fileName ); |
415 | fileName += "/todo"; | 419 | fileName += "/todo"; |
416 | fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this ); | 420 | fileName = KFileDialog::getSaveFileName( fileName , "Load Todo template", this ); |
417 | if ( fileName.length() == 0 ) | 421 | if ( fileName.length() == 0 ) |
418 | return; | 422 | return; |
419 | CalendarLocal cal; | 423 | CalendarLocal cal; |
420 | ICalFormat format; | 424 | ICalFormat format; |
421 | if ( !format.load( &cal, fileName ) ) { | 425 | if ( !format.load( &cal, fileName ) ) { |
422 | KMessageBox::error( this, i18n("Error loading template file\n '%1'.") | 426 | KMessageBox::error( this, i18n("Error loading template file\n '%1'.") |
423 | .arg( fileName ) ); | 427 | .arg( fileName ) ); |
424 | return ; | 428 | return ; |
425 | } | 429 | } |
426 | QPtrList<Todo> todos = cal.todos(); | 430 | QPtrList<Todo> todos = cal.todos(); |
427 | Todo * todo = todos.first(); | 431 | Todo * todo = todos.first(); |
428 | if ( !todo ) { | 432 | if ( !todo ) { |
429 | KMessageBox::error( this, | 433 | KMessageBox::error( this, |
430 | i18n("Template does not\ncontain a valid Todo.")); | 434 | i18n("Template does not\ncontain a valid Todo.")); |
431 | } else { | 435 | } else { |
432 | readTodo( todo ); | 436 | readTodo( todo ); |
433 | } | 437 | } |
434 | 438 | ||
435 | } | 439 | } |
436 | 440 | ||
437 | void KOTodoEditor::slotSaveTemplate() | 441 | void KOTodoEditor::slotSaveTemplate() |
438 | { | 442 | { |
439 | QString fileName =locateLocal( "templates", "todos" ); | 443 | QString fileName =locateLocal( "templates", "todos" ); |
440 | QDir t_dir; | 444 | QDir t_dir; |
441 | if ( !t_dir.exists(fileName) ) | 445 | if ( !t_dir.exists(fileName) ) |
442 | t_dir.mkdir ( fileName ); | 446 | t_dir.mkdir ( fileName ); |
443 | fileName += "/todo"; | 447 | fileName += "/todo"; |
444 | fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this ); | 448 | fileName = KFileDialog::getSaveFileName( fileName , "Save as Todo template", this ); |
445 | if ( fileName.length() > 0 ) | 449 | if ( fileName.length() > 0 ) |
446 | saveTemplate( fileName ); | 450 | saveTemplate( fileName ); |
447 | } | 451 | } |
448 | 452 | ||
449 | void KOTodoEditor::saveTemplate( const QString &templateName ) | 453 | void KOTodoEditor::saveTemplate( const QString &templateName ) |
450 | { | 454 | { |
451 | Todo *todo = new Todo; | 455 | Todo *todo = new Todo; |
452 | writeTodo( todo ); | 456 | writeTodo( todo ); |
453 | saveAsTemplate( todo, templateName ); | 457 | saveAsTemplate( todo, templateName ); |
diff --git a/libkdepim/ksyncprefsdialog.cpp b/libkdepim/ksyncprefsdialog.cpp index 1f9afcb..b097277 100644 --- a/libkdepim/ksyncprefsdialog.cpp +++ b/libkdepim/ksyncprefsdialog.cpp | |||
@@ -52,387 +52,387 @@ | |||
52 | #include <kglobal.h> | 52 | #include <kglobal.h> |
53 | #include <kfontdialog.h> | 53 | #include <kfontdialog.h> |
54 | #include <kmessagebox.h> | 54 | #include <kmessagebox.h> |
55 | #include <kcolordialog.h> | 55 | #include <kcolordialog.h> |
56 | #include <kiconloader.h> | 56 | #include <kiconloader.h> |
57 | #include <kemailsettings.h> | 57 | #include <kemailsettings.h> |
58 | #include <kstandarddirs.h> | 58 | #include <kstandarddirs.h> |
59 | #include <kfiledialog.h> | 59 | #include <kfiledialog.h> |
60 | #include <kmessagebox.h> | 60 | #include <kmessagebox.h> |
61 | 61 | ||
62 | //#include <kurlrequester.h> | 62 | //#include <kurlrequester.h> |
63 | #include <klineedit.h> | 63 | #include <klineedit.h> |
64 | #include "ksyncprofile.h" | 64 | #include "ksyncprofile.h" |
65 | 65 | ||
66 | 66 | ||
67 | //#include "koprefs.h" | 67 | //#include "koprefs.h" |
68 | 68 | ||
69 | #include "ksyncprefsdialog.h" | 69 | #include "ksyncprefsdialog.h" |
70 | //#include "koglobals.h" | 70 | //#include "koglobals.h" |
71 | 71 | ||
72 | 72 | ||
73 | KSyncPrefsDialog::KSyncPrefsDialog(QWidget *parent, char *name, bool modal) : | 73 | KSyncPrefsDialog::KSyncPrefsDialog(QWidget *parent, char *name, bool modal) : |
74 | KDialog(parent,name,true) | 74 | KDialog(parent,name,true) |
75 | { | 75 | { |
76 | 76 | ||
77 | setCaption( i18n("Synchronization Preferences")); | 77 | setCaption( i18n("Synchronization Preferences")); |
78 | 78 | ||
79 | mSyncProfiles.setAutoDelete( true ); | 79 | mSyncProfiles.setAutoDelete( true ); |
80 | setupSyncAlgTab(); | 80 | setupSyncAlgTab(); |
81 | } | 81 | } |
82 | 82 | ||
83 | 83 | ||
84 | KSyncPrefsDialog::~KSyncPrefsDialog() | 84 | KSyncPrefsDialog::~KSyncPrefsDialog() |
85 | { | 85 | { |
86 | } | 86 | } |
87 | 87 | ||
88 | void KSyncPrefsDialog::setupSyncAlgTab() | 88 | void KSyncPrefsDialog::setupSyncAlgTab() |
89 | { | 89 | { |
90 | QLabel * lab; | 90 | QLabel * lab; |
91 | //QFrame *page = addPage(i18n("Sync Prefs"),0,0); | 91 | //QFrame *page = addPage(i18n("Sync Prefs"),0,0); |
92 | QVBox * mainbox = new QVBox( this ); | 92 | QVBox * mainbox = new QVBox( this ); |
93 | QScrollView* sv = new QScrollView( mainbox ); | 93 | QScrollView* sv = new QScrollView( mainbox ); |
94 | QHBoxLayout * lay = new QHBoxLayout( this ); | 94 | QHBoxLayout * lay = new QHBoxLayout( this ); |
95 | lay->addWidget( mainbox ); | 95 | lay->addWidget( mainbox ); |
96 | QHBox * b_box = new QHBox( mainbox ); | 96 | QHBox * b_box = new QHBox( mainbox ); |
97 | 97 | ||
98 | QPushButton* button = new QPushButton( i18n("Ok"), b_box ); | 98 | QPushButton* button = new QPushButton( i18n("Ok"), b_box ); |
99 | connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) ); | 99 | connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) ); |
100 | button = new QPushButton( i18n("Cancel"), b_box ); | 100 | button = new QPushButton( i18n("Cancel"), b_box ); |
101 | connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) ); | 101 | connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) ); |
102 | //QBoxLayout * sl = new QVBoxLayout(this ); | 102 | //QBoxLayout * sl = new QVBoxLayout(this ); |
103 | //sl->addWidget ( sv ); | 103 | //sl->addWidget ( sv ); |
104 | sv->setResizePolicy ( QScrollView::AutoOneFit ); | 104 | sv->setResizePolicy ( QScrollView::AutoOneFit ); |
105 | QFrame *topFrame = new QFrame ( sv ); | 105 | QFrame *topFrame = new QFrame ( sv ); |
106 | sv->addChild( topFrame ); | 106 | sv->addChild( topFrame ); |
107 | mSetupSyncAlgTab = topFrame; | 107 | mSetupSyncAlgTab = topFrame; |
108 | QGridLayout *topLayout = new QGridLayout(topFrame,6,2); | 108 | QGridLayout *topLayout = new QGridLayout(topFrame,6,2); |
109 | topLayout->setSpacing(spacingHint()); | 109 | topLayout->setSpacing(spacingHint()); |
110 | topLayout->setMargin(marginHint()); | 110 | topLayout->setMargin(marginHint()); |
111 | 111 | ||
112 | //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame); | 112 | //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame); |
113 | int iii = 0; | 113 | int iii = 0; |
114 | //topLayout->addMultiCellWidget(lab , iii,iii,0,1); | 114 | //topLayout->addMultiCellWidget(lab , iii,iii,0,1); |
115 | //++iii; | 115 | //++iii; |
116 | 116 | ||
117 | mMyMachineName = new QLineEdit(topFrame); | 117 | mMyMachineName = new QLineEdit(topFrame); |
118 | lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame); | 118 | lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame); |
119 | topLayout->addWidget(lab ,iii,0); | 119 | topLayout->addWidget(lab ,iii,0); |
120 | topLayout->addWidget(mMyMachineName,iii,1); | 120 | topLayout->addWidget(mMyMachineName,iii,1); |
121 | ++iii; | 121 | ++iii; |
122 | 122 | ||
123 | QHBox* buttonbox = new QHBox( topFrame); | 123 | QHBox* buttonbox = new QHBox( topFrame); |
124 | topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1); | 124 | topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1); |
125 | ++iii; | 125 | ++iii; |
126 | button = new QPushButton( i18n("New profile"), buttonbox ); | 126 | button = new QPushButton( i18n("New profile"), buttonbox ); |
127 | connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) ); | 127 | connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) ); |
128 | 128 | ||
129 | button = new QPushButton( i18n("Clone profile"), buttonbox ); | 129 | button = new QPushButton( i18n("Clone profile"), buttonbox ); |
130 | connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) ); | 130 | connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) ); |
131 | 131 | ||
132 | button = new QPushButton( i18n("Delete profile"), buttonbox ); | 132 | button = new QPushButton( i18n("Delete profile"), buttonbox ); |
133 | connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) ); | 133 | connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) ); |
134 | 134 | ||
135 | mProfileBox = new QComboBox(topFrame); | 135 | mProfileBox = new QComboBox(topFrame); |
136 | mProfileBox->setEditable ( true ); | 136 | mProfileBox->setEditable ( true ); |
137 | mProfileBox->setInsertionPolicy(QComboBox::NoInsertion); | 137 | mProfileBox->setInsertionPolicy(QComboBox::NoInsertion); |
138 | connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) ); | 138 | connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) ); |
139 | connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) ); | 139 | connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) ); |
140 | 140 | ||
141 | lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame); | 141 | lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame); |
142 | topLayout->addWidget(lab ,iii,0); | 142 | topLayout->addWidget(lab ,iii,0); |
143 | topLayout->addWidget(mProfileBox, iii,1); | 143 | topLayout->addWidget(mProfileBox, iii,1); |
144 | ++iii; | 144 | ++iii; |
145 | 145 | ||
146 | 146 | ||
147 | 147 | ||
148 | QHGroupBox *iims = new QHGroupBox( i18n("Multiple Sync options"), topFrame); | 148 | QHGroupBox *iims = new QHGroupBox( i18n("Multiple Sync options"), topFrame); |
149 | new QLabel( i18n("Include in multiple "), iims ); | 149 | new QLabel( i18n("Include in multiple "), iims ); |
150 | mIncludeInRing = new QCheckBox( i18n("calendar "), iims ); | 150 | mIncludeInRing = new QCheckBox( i18n("calendar "), iims ); |
151 | mIncludeInRingAB = new QCheckBox( i18n("addressbook "), iims ); | 151 | mIncludeInRingAB = new QCheckBox( i18n("addressbook "), iims ); |
152 | mIncludeInRingPWM = new QCheckBox( i18n("pwmanager"), iims ); | 152 | mIncludeInRingPWM = new QCheckBox( i18n("pwmanager"), iims ); |
153 | new QLabel( i18n(" sync"), iims ); | 153 | new QLabel( i18n(" sync"), iims ); |
154 | topLayout->addMultiCellWidget(iims, iii,iii,0,1); | 154 | topLayout->addMultiCellWidget(iims, iii,iii,0,1); |
155 | ++iii; | 155 | ++iii; |
156 | QVGroupBox* gb0 = new QVGroupBox( i18n("Sync algo options"), topFrame); | 156 | QVGroupBox* gb0 = new QVGroupBox( i18n("Sync algo options"), topFrame); |
157 | topLayout->addMultiCellWidget(gb0, iii,iii,0,1); | 157 | topLayout->addMultiCellWidget(gb0, iii,iii,0,1); |
158 | ++iii; | 158 | ++iii; |
159 | QButtonGroup* gr; | 159 | QButtonGroup* gr; |
160 | { | 160 | { |
161 | QVGroupBox* topFrame = gb0; | 161 | QVGroupBox* topFrame = gb0; |
162 | 162 | ||
163 | 163 | ||
164 | 164 | ||
165 | mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame ); | 165 | mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame ); |
166 | //topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1); | 166 | //topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1); |
167 | //++iii; | 167 | //++iii; |
168 | gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame); | 168 | gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame); |
169 | //topLayout->addMultiCellWidget(gr, iii,iii,0,1); | 169 | //topLayout->addMultiCellWidget(gr, iii,iii,0,1); |
170 | //++iii; | 170 | //++iii; |
171 | loc = new QRadioButton ( i18n("Take local entry on conflict"), gr ); | 171 | loc = new QRadioButton ( i18n("Take local entry on conflict"), gr ); |
172 | rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr ); | 172 | rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr ); |
173 | newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr ); | 173 | newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr ); |
174 | ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr ); | 174 | ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr ); |
175 | f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr ); | 175 | f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr ); |
176 | f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr ); | 176 | f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr ); |
177 | // both = new QRadioButton ( i18n("Take both on conflict"), gr ); | 177 | // both = new QRadioButton ( i18n("Take both on conflict"), gr ); |
178 | 178 | ||
179 | mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame ); | 179 | mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame ); |
180 | //topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); | 180 | //topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); |
181 | //++iii; | 181 | //++iii; |
182 | 182 | ||
183 | #if 0 | 183 | #if 0 |
184 | QHGroupBox* gb51 = new QHGroupBox( i18n("Local resources to sync with:"), topFrame); | 184 | QHGroupBox* gb51 = new QHGroupBox( i18n("Local resources to sync with:"), topFrame); |
185 | { | 185 | { |
186 | QVBox * fibo2 = new QVBox ( gb51 ); | 186 | QVBox * fibo2 = new QVBox ( gb51 ); |
187 | new QLabel ( i18n("Calendar resources:"), fibo2 ); | 187 | new QLabel ( i18n("Calendar resources:"), fibo2 ); |
188 | //mFilterInCal = new QComboBox( fibo2 ); | 188 | //mFilterInCal = new QComboBox( fibo2 ); |
189 | fibo2 = new QVBox ( gb51 ); | 189 | fibo2 = new QVBox ( gb51 ); |
190 | new QLabel ( i18n("Addressbook resources:"), fibo2 ); | 190 | new QLabel ( i18n("Addressbook resources:"), fibo2 ); |
191 | //mFilterInAB = new QComboBox( fibo2 ); | 191 | //mFilterInAB = new QComboBox( fibo2 ); |
192 | } | 192 | } |
193 | #endif | 193 | #endif |
194 | QHGroupBox* gb5 = new QHGroupBox( i18n("Apply filter when adding data to local:"), topFrame); | 194 | QHGroupBox* gb5 = new QHGroupBox( i18n("Apply filter when adding data to local:"), topFrame); |
195 | QVBox * fibo2 = new QVBox ( gb5 ); | 195 | QVBox * fibo2 = new QVBox ( gb5 ); |
196 | new QLabel ( i18n("Incoming calendar filter:"), fibo2 ); | 196 | new QLabel ( i18n("Incoming calendar filter:"), fibo2 ); |
197 | mFilterInCal = new QComboBox( fibo2 ); | 197 | mFilterInCal = new QComboBox( fibo2 ); |
198 | fibo2 = new QVBox ( gb5 ); | 198 | fibo2 = new QVBox ( gb5 ); |
199 | new QLabel ( i18n("Incoming addressbook filter:"), fibo2 ); | 199 | new QLabel ( i18n("Incoming addressbook filter:"), fibo2 ); |
200 | mFilterInAB = new QComboBox( fibo2 ); | 200 | mFilterInAB = new QComboBox( fibo2 ); |
201 | 201 | ||
202 | mWriteBackFile = new QCheckBox( i18n("Write back synced data"), topFrame ); | 202 | mWriteBackFile = new QCheckBox( i18n("Write back synced data"), topFrame ); |
203 | // topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1); | 203 | // topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1); |
204 | // ++iii; | 204 | // ++iii; |
205 | 205 | ||
206 | QVGroupBox* gb2 = new QVGroupBox( i18n("Write back options"), topFrame); | 206 | QVGroupBox* gb2 = new QVGroupBox( i18n("Write back options"), topFrame); |
207 | //topLayout->addMultiCellWidget(gb2, iii,iii,0,1); | 207 | //topLayout->addMultiCellWidget(gb2, iii,iii,0,1); |
208 | //++iii; | 208 | //++iii; |
209 | { | 209 | { |
210 | QVGroupBox*topFrame = gb2; | 210 | QVGroupBox*topFrame = gb2; |
211 | mWriteBackExisting= new QCheckBox( i18n("Write back (on remote) existing entries only"), topFrame ); | 211 | mWriteBackExisting= new QCheckBox( i18n("Write back (on remote) existing entries only"), topFrame ); |
212 | QHGroupBox* gb4 = new QHGroupBox( i18n("Apply filter when adding data to remote:"), topFrame); | 212 | QHGroupBox* gb4 = new QHGroupBox( i18n("Apply filter when adding data to remote:"), topFrame); |
213 | QVBox * fibo = new QVBox ( gb4 ); | 213 | QVBox * fibo = new QVBox ( gb4 ); |
214 | new QLabel ( i18n("Outgoing calendar filter:"), fibo ); | 214 | new QLabel ( i18n("Outgoing calendar filter:"), fibo ); |
215 | mFilterOutCal = new QComboBox( fibo ); | 215 | mFilterOutCal = new QComboBox( fibo ); |
216 | fibo = new QVBox ( gb4 ); | 216 | fibo = new QVBox ( gb4 ); |
217 | new QLabel ( i18n("Outgoing addressbook filter:"), fibo ); | 217 | new QLabel ( i18n("Outgoing addressbook filter:"), fibo ); |
218 | mFilterOutAB = new QComboBox( fibo ); | 218 | mFilterOutAB = new QComboBox( fibo ); |
219 | //topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1); | 219 | //topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1); |
220 | //++iii; | 220 | //++iii; |
221 | mWriteBackFuture= new QCheckBox( i18n("Write back (calendar) entries for time period only"), topFrame ); | 221 | mWriteBackFuture= new QCheckBox( i18n("Write back (calendar) entries for time period only"), topFrame ); |
222 | //topLayout->addMultiCellWidget(mWriteBackFuture, iii,iii,0,1); | 222 | //topLayout->addMultiCellWidget(mWriteBackFuture, iii,iii,0,1); |
223 | //++iii; | 223 | //++iii; |
224 | QHGroupBox* gb3 = new QHGroupBox( i18n("Time period"), topFrame); | 224 | QHGroupBox* gb3 = new QHGroupBox( i18n("Time period"), topFrame); |
225 | connect ( mWriteBackFuture, SIGNAL( toggled ( bool ) ), gb3, SLOT ( setEnabled ( bool ) ) ); | 225 | connect ( mWriteBackFuture, SIGNAL( toggled ( bool ) ), gb3, SLOT ( setEnabled ( bool ) ) ); |
226 | new QLabel( i18n("From ") , gb3 ); | 226 | new QLabel( i18n("From ") , gb3 ); |
227 | mWriteBackPastWeeks= new QSpinBox(1,104, 1, gb3); | 227 | mWriteBackPastWeeks= new QSpinBox(1,104, 1, gb3); |
228 | new QLabel( i18n(" weeks in the past to ") , gb3 ); | 228 | new QLabel( i18n(" weeks in the past to ") , gb3 ); |
229 | mWriteBackFutureWeeks= new QSpinBox(1,104, 1, gb3); | 229 | mWriteBackFutureWeeks= new QSpinBox(1,104, 1, gb3); |
230 | new QLabel( i18n(" weeks in the future ") , gb3 ); | 230 | new QLabel( i18n(" weeks in the future ") , gb3 ); |
231 | //topLayout->addMultiCellWidget(mWriteBackFutureWeeks, iii,iii,1,1); | 231 | //topLayout->addMultiCellWidget(mWriteBackFutureWeeks, iii,iii,1,1); |
232 | //++iii; | 232 | //++iii; |
233 | gb3->setEnabled( false ); | 233 | gb3->setEnabled( false ); |
234 | connect ( mWriteBackExisting, SIGNAL( toggled ( bool ) ), gb4, SLOT ( setDisabled ( bool ) ) ); | 234 | connect ( mWriteBackExisting, SIGNAL( toggled ( bool ) ), gb4, SLOT ( setDisabled ( bool ) ) ); |
235 | } | 235 | } |
236 | connect ( mWriteBackFile, SIGNAL( toggled ( bool ) ), gb2, SLOT ( setEnabled ( bool ) ) ); | 236 | connect ( mWriteBackFile, SIGNAL( toggled ( bool ) ), gb2, SLOT ( setEnabled ( bool ) ) ); |
237 | 237 | ||
238 | } | 238 | } |
239 | proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame); | 239 | proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame); |
240 | gr = proGr; | 240 | gr = proGr; |
241 | topLayout->addMultiCellWidget(gr, iii,iii,0,1); | 241 | topLayout->addMultiCellWidget(gr, iii,iii,0,1); |
242 | ++iii; | 242 | ++iii; |
243 | mIsLocal = new QRadioButton ( i18n("Local file"), gr ); | 243 | mIsLocal = new QRadioButton ( i18n("Local file"), gr ); |
244 | mIsPi = new QRadioButton ( i18n("Pi-Sync - all resources ( direct Kx/Pi to Kx/Pi sync )"), gr ); | 244 | mIsPi = new QRadioButton ( i18n("Pi-Sync - all calendars ( direct Kx/Pi to Kx/Pi sync )"), gr ); |
245 | connect (mIsPi, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); | 245 | connect (mIsPi, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); |
246 | mIsPiSpecific = new QRadioButton ( i18n("Pi-Sync - selected resources ( direct Kx/Pi to Kx/Pi sync )"), gr ); | 246 | mIsPiSpecific = new QRadioButton ( i18n("Pi-Sync - selected calendars ( direct Kx/Pi to Kx/Pi sync )"), gr ); |
247 | connect (mIsPiSpecific, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); | 247 | connect (mIsPiSpecific, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); |
248 | mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr ); | 248 | mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr ); |
249 | connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); | 249 | connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); |
250 | mIsPhone = new QRadioButton ( i18n("Mobile device (cell phone)"), gr ); | 250 | mIsPhone = new QRadioButton ( i18n("Mobile device (cell phone)"), gr ); |
251 | connect (mIsPhone, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); | 251 | connect (mIsPhone, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); |
252 | 252 | ||
253 | QVGroupBox* gb1 = new QVGroupBox( i18n("Profile kind specific settings"), topFrame); | 253 | QVGroupBox* gb1 = new QVGroupBox( i18n("Profile kind specific settings"), topFrame); |
254 | topLayout->addMultiCellWidget(gb1, iii,iii,0,1); | 254 | topLayout->addMultiCellWidget(gb1, iii,iii,0,1); |
255 | ++iii; | 255 | ++iii; |
256 | 256 | ||
257 | // ****************************************** | 257 | // ****************************************** |
258 | // Profile kind specific settings | 258 | // Profile kind specific settings |
259 | { | 259 | { |
260 | // *** phone ******************************* | 260 | // *** phone ******************************* |
261 | QVGroupBox* topFrame = gb1; | 261 | QVGroupBox* topFrame = gb1; |
262 | phoneWidget = new QVBox( topFrame); | 262 | phoneWidget = new QVBox( topFrame); |
263 | //topLayout->addMultiCellWidget(phoneWidget, iii,iii,0,1); | 263 | //topLayout->addMultiCellWidget(phoneWidget, iii,iii,0,1); |
264 | //++iii; | 264 | //++iii; |
265 | mWriteContactToSIM = 0;//new QCheckBox( i18n("Sync contacts with phone SIM card (If not, sync with phone memory)"), phoneWidget ); | 265 | mWriteContactToSIM = 0;//new QCheckBox( i18n("Sync contacts with phone SIM card (If not, sync with phone memory)"), phoneWidget ); |
266 | QHBox* temphb = new QHBox( phoneWidget ); | 266 | QHBox* temphb = new QHBox( phoneWidget ); |
267 | new QLabel( i18n("I/O device: "), temphb ); | 267 | new QLabel( i18n("I/O device: "), temphb ); |
268 | mPhoneDevice = new QLineEdit( temphb); | 268 | mPhoneDevice = new QLineEdit( temphb); |
269 | button = new QPushButton( i18n("Help..."), temphb ); | 269 | button = new QPushButton( i18n("Help..."), temphb ); |
270 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpDevice() ) ); | 270 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpDevice() ) ); |
271 | 271 | ||
272 | 272 | ||
273 | temphb = new QHBox( phoneWidget ); | 273 | temphb = new QHBox( phoneWidget ); |
274 | new QLabel( i18n("Connection: "), temphb ); | 274 | new QLabel( i18n("Connection: "), temphb ); |
275 | mPhoneConnection = new QLineEdit( temphb); | 275 | mPhoneConnection = new QLineEdit( temphb); |
276 | button = new QPushButton( i18n("Help..."), temphb ); | 276 | button = new QPushButton( i18n("Help..."), temphb ); |
277 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpConnection() ) ); | 277 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpConnection() ) ); |
278 | 278 | ||
279 | 279 | ||
280 | temphb = new QHBox( phoneWidget ); | 280 | temphb = new QHBox( phoneWidget ); |
281 | new QLabel( i18n("Model(opt.): "), temphb ); | 281 | new QLabel( i18n("Model(opt.): "), temphb ); |
282 | mPhoneModel = new QLineEdit( temphb); | 282 | mPhoneModel = new QLineEdit( temphb); |
283 | button = new QPushButton( i18n("Help..."), temphb ); | 283 | button = new QPushButton( i18n("Help..."), temphb ); |
284 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpModel() ) ); | 284 | connect ( button, SIGNAL( clicked()), this, SLOT ( helpModel() ) ); |
285 | 285 | ||
286 | // *** local******************************* | 286 | // *** local******************************* |
287 | localFileWidget = new QVBox( topFrame); | 287 | localFileWidget = new QVBox( topFrame); |
288 | //topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); | 288 | //topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); |
289 | //++iii; | 289 | //++iii; |
290 | temphb = new QHBox( localFileWidget ); | 290 | temphb = new QHBox( localFileWidget ); |
291 | 291 | ||
292 | lab = new QLabel( i18n("Local file Cal:"), temphb ); | 292 | lab = new QLabel( i18n("Local file Cal:"), temphb ); |
293 | lab = new QLabel( i18n("Local file ABook:"), temphb ); | 293 | lab = new QLabel( i18n("Local file ABook:"), temphb ); |
294 | lab = new QLabel( i18n("Local file PWMgr:"), temphb ); | 294 | lab = new QLabel( i18n("Local file PWMgr:"), temphb ); |
295 | temphb = new QHBox( localFileWidget ); | 295 | temphb = new QHBox( localFileWidget ); |
296 | button = new QPushButton( i18n("Choose..."), temphb ); | 296 | button = new QPushButton( i18n("Choose..."), temphb ); |
297 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); | 297 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); |
298 | button = new QPushButton( i18n("Choose..."), temphb ); | 298 | button = new QPushButton( i18n("Choose..."), temphb ); |
299 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFileAB() ) ); | 299 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFileAB() ) ); |
300 | button = new QPushButton( i18n("Choose..."), temphb ); | 300 | button = new QPushButton( i18n("Choose..."), temphb ); |
301 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFilePWM() ) ); | 301 | connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFilePWM() ) ); |
302 | temphb = new QHBox( localFileWidget ); | 302 | temphb = new QHBox( localFileWidget ); |
303 | 303 | ||
304 | mRemoteFile = new QLineEdit( temphb); | 304 | mRemoteFile = new QLineEdit( temphb); |
305 | mRemoteFileAB = new QLineEdit( temphb); | 305 | mRemoteFileAB = new QLineEdit( temphb); |
306 | mRemoteFilePWM = new QLineEdit( temphb); | 306 | mRemoteFilePWM = new QLineEdit( temphb); |
307 | mIsKapiFileL = new QCheckBox( i18n("Addressbook file (*.vcf) is used by KA/Pi"), localFileWidget ); | 307 | mIsKapiFileL = new QCheckBox( i18n("Addressbook file (*.vcf) is used by KA/Pi"), localFileWidget ); |
308 | 308 | ||
309 | 309 | ||
310 | // *** remote******************************* | 310 | // *** remote******************************* |
311 | remoteFileWidget = new QVBox( topFrame); | 311 | remoteFileWidget = new QVBox( topFrame); |
312 | //topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); | 312 | //topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); |
313 | //++iii; | 313 | //++iii; |
314 | temphb = new QHBox( remoteFileWidget ); | 314 | temphb = new QHBox( remoteFileWidget ); |
315 | new QLabel( i18n("Calendar:"), temphb); | 315 | new QLabel( i18n("Calendar:"), temphb); |
316 | new QLabel( i18n("AddressBook:"), temphb); | 316 | new QLabel( i18n("AddressBook:"), temphb); |
317 | new QLabel( i18n("PWManager:"), temphb); | 317 | new QLabel( i18n("PWManager:"), temphb); |
318 | 318 | ||
319 | lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget); | 319 | lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget); |
320 | temphb = new QHBox( remoteFileWidget ); | 320 | temphb = new QHBox( remoteFileWidget ); |
321 | mRemotePrecommand = new QLineEdit(temphb); | 321 | mRemotePrecommand = new QLineEdit(temphb); |
322 | mRemotePrecommandAB = new QLineEdit(temphb); | 322 | mRemotePrecommandAB = new QLineEdit(temphb); |
323 | mRemotePrecommandPWM = new QLineEdit(temphb); | 323 | mRemotePrecommandPWM = new QLineEdit(temphb); |
324 | 324 | ||
325 | lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); | 325 | lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); |
326 | temphb = new QHBox( remoteFileWidget ); | 326 | temphb = new QHBox( remoteFileWidget ); |
327 | mLocalTempFile = new QLineEdit(temphb); | 327 | mLocalTempFile = new QLineEdit(temphb); |
328 | mLocalTempFileAB = new QLineEdit(temphb); | 328 | mLocalTempFileAB = new QLineEdit(temphb); |
329 | mLocalTempFilePWM = new QLineEdit(temphb); | 329 | mLocalTempFilePWM = new QLineEdit(temphb); |
330 | 330 | ||
331 | lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); | 331 | lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); |
332 | temphb = new QHBox( remoteFileWidget ); | 332 | temphb = new QHBox( remoteFileWidget ); |
333 | mRemotePostcommand = new QLineEdit(temphb ); | 333 | mRemotePostcommand = new QLineEdit(temphb ); |
334 | mRemotePostcommandAB = new QLineEdit(temphb ); | 334 | mRemotePostcommandAB = new QLineEdit(temphb ); |
335 | mRemotePostcommandPWM = new QLineEdit(temphb ); | 335 | mRemotePostcommandPWM = new QLineEdit(temphb ); |
336 | mIsKapiFileR = new QCheckBox( i18n("Addressbook file is used by KA/Pi"), remoteFileWidget ); | 336 | mIsKapiFileR = new QCheckBox( i18n("Addressbook file is used by KA/Pi"), remoteFileWidget ); |
337 | lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget); | 337 | lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget); |
338 | temphb = new QHBox( remoteFileWidget ); | 338 | temphb = new QHBox( remoteFileWidget ); |
339 | button = new QPushButton( i18n("ssh/scp"), temphb ); | 339 | button = new QPushButton( i18n("ssh/scp"), temphb ); |
340 | connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) ); | 340 | connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) ); |
341 | button = new QPushButton( i18n("ftp"), temphb ); | 341 | button = new QPushButton( i18n("ftp"), temphb ); |
342 | connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) ); | 342 | connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) ); |
343 | lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget); | 343 | lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget); |
344 | 344 | ||
345 | // *** pi-sync******************************* | 345 | // *** pi-sync******************************* |
346 | piWidget = new QVBox( topFrame); | 346 | piWidget = new QVBox( topFrame); |
347 | //topLayout->addMultiCellWidget(piWidget, iii,iii,0,1); | 347 | //topLayout->addMultiCellWidget(piWidget, iii,iii,0,1); |
348 | //++iii; | 348 | //++iii; |
349 | temphb = new QHBox( piWidget ); | 349 | temphb = new QHBox( piWidget ); |
350 | new QLabel( i18n("Calendar:"), temphb); | 350 | new QLabel( i18n("Calendar:"), temphb); |
351 | new QLabel( i18n("AddressBook:"), temphb); | 351 | new QLabel( i18n("AddressBook:"), temphb); |
352 | new QLabel( i18n("PWManager:"), temphb); | 352 | new QLabel( i18n("PWManager:"), temphb); |
353 | 353 | ||
354 | lab = new QLabel( i18n("Password for remote access: (could be the same for each)"), piWidget); | 354 | lab = new QLabel( i18n("Password for remote access: (could be the same for each)"), piWidget); |
355 | temphb = new QHBox( piWidget ); | 355 | temphb = new QHBox( piWidget ); |
356 | mRemotePw = new QLineEdit(temphb); | 356 | mRemotePw = new QLineEdit(temphb); |
357 | mRemotePwAB = new QLineEdit(temphb); | 357 | mRemotePwAB = new QLineEdit(temphb); |
358 | mRemotePwPWM = new QLineEdit(temphb); | 358 | mRemotePwPWM = new QLineEdit(temphb); |
359 | 359 | ||
360 | lab = new QLabel( i18n("Remote IP address: (could be the same for each)"), piWidget); | 360 | lab = new QLabel( i18n("Remote IP address: (could be the same for each)"), piWidget); |
361 | temphb = new QHBox( piWidget ); | 361 | temphb = new QHBox( piWidget ); |
362 | mRemoteIP = new QLineEdit(temphb); | 362 | mRemoteIP = new QLineEdit(temphb); |
363 | mRemoteIPAB = new QLineEdit(temphb); | 363 | mRemoteIPAB = new QLineEdit(temphb); |
364 | mRemoteIPPWM = new QLineEdit(temphb); | 364 | mRemoteIPPWM = new QLineEdit(temphb); |
365 | 365 | ||
366 | lab = new QLabel( i18n("Remote port number: (should be different for each)"), piWidget); | 366 | lab = new QLabel( i18n("Remote port number: (should be different for each)"), piWidget); |
367 | temphb = new QHBox( piWidget ); | 367 | temphb = new QHBox( piWidget ); |
368 | mRemotePort = new QLineEdit(temphb); | 368 | mRemotePort = new QLineEdit(temphb); |
369 | mRemotePortAB = new QLineEdit(temphb); | 369 | mRemotePortAB = new QLineEdit(temphb); |
370 | mRemotePortPWM = new QLineEdit(temphb); | 370 | mRemotePortPWM = new QLineEdit(temphb); |
371 | 371 | ||
372 | lab = new QLabel( i18n("Local/remote Resource sync partners (Leave empty to not sync)"), piWidget); | 372 | lab = new QLabel( i18n("Local/remote Resource sync partners (Leave empty to not sync)"), piWidget); |
373 | mTableBox = new QHBox( piWidget ); | 373 | mTableBox = new QHBox( piWidget ); |
374 | mResTableKopi = new QTable( 1, 1, mTableBox ); | 374 | mResTableKopi = new QTable( 1, 1, mTableBox ); |
375 | mResTableKapi = new QTable( 1, 1, mTableBox ); | 375 | mResTableKapi = new QTable( 1, 1, mTableBox ); |
376 | mResTablePwmpi = new QTable( 1, 1, mTableBox ); | 376 | mResTablePwmpi = new QTable( 1, 1, mTableBox ); |
377 | mResTableKopi->horizontalHeader()->setLabel( 0, i18n("Remote") ); | 377 | mResTableKopi->horizontalHeader()->setLabel( 0, i18n("Remote") ); |
378 | mResTableKapi->horizontalHeader()->setLabel( 0, i18n("Remote") ); | 378 | mResTableKapi->horizontalHeader()->setLabel( 0, i18n("Remote") ); |
379 | mResTablePwmpi->horizontalHeader()->setLabel( 0, i18n("Remote") ); | 379 | mResTablePwmpi->horizontalHeader()->setLabel( 0, i18n("Remote") ); |
380 | mResTableKopi->setLeftMargin( 80 ); | 380 | mResTableKopi->setLeftMargin( 80 ); |
381 | } | 381 | } |
382 | // ****************************************** | 382 | // ****************************************** |
383 | // Profile kind specific settings END | 383 | // Profile kind specific settings END |
384 | 384 | ||
385 | } | 385 | } |
386 | 386 | ||
387 | void KSyncPrefsDialog::readResources() | 387 | void KSyncPrefsDialog::readResources() |
388 | { | 388 | { |
389 | mResourcesKopi.clear(); | 389 | mResourcesKopi.clear(); |
390 | mResourcesKapi.clear(); | 390 | mResourcesKapi.clear(); |
391 | KConfig fc(locateLocal("config","kopicalendarrc")); | 391 | KConfig fc(locateLocal("config","kopicalendarrc")); |
392 | fc.setGroup("CC"); | 392 | fc.setGroup("CC"); |
393 | int numCals = fc.readNumEntry("NumberCalendars",0 ); | 393 | int numCals = fc.readNumEntry("NumberCalendars",0 ); |
394 | int curCal = 1; | 394 | int curCal = 1; |
395 | while ( curCal <= numCals ) { | 395 | while ( curCal <= numCals ) { |
396 | QString prefix = "Cal_" +QString::number( curCal ); | 396 | QString prefix = "Cal_" +QString::number( curCal ); |
397 | QString name = fc.readEntry( prefix+"_Name", "Calendar"); | 397 | QString name = fc.readEntry( prefix+"_Name", "Calendar"); |
398 | mResourcesKopi.append( name ); | 398 | mResourcesKopi.append( name ); |
399 | ++curCal; | 399 | ++curCal; |
400 | } | 400 | } |
401 | mResTableKopi->setNumRows( mResourcesKopi.count() ); | 401 | mResTableKopi->setNumRows( mResourcesKopi.count() ); |
402 | int i; | 402 | int i; |
403 | for ( i = 0;i < mResourcesKopi.count(); ++i ) { | 403 | for ( i = 0;i < mResourcesKopi.count(); ++i ) { |
404 | mResTableKopi->verticalHeader ()->setLabel( i, mResourcesKopi[i] ); | 404 | mResTableKopi->verticalHeader ()->setLabel( i, mResourcesKopi[i] ); |
405 | } | 405 | } |
406 | } | 406 | } |
407 | void KSyncPrefsDialog::readFilter() | 407 | void KSyncPrefsDialog::readFilter() |
408 | { | 408 | { |
409 | mFilterKapi.clear(); | 409 | mFilterKapi.clear(); |
410 | mFilterKopi.clear(); | 410 | mFilterKopi.clear(); |
411 | KConfig cfgko(locateLocal("config","korganizerrc")); | 411 | KConfig cfgko(locateLocal("config","korganizerrc")); |
412 | KConfig cfgka(locateLocal("config","kaddressbookrc")); | 412 | KConfig cfgka(locateLocal("config","kaddressbookrc")); |
413 | cfgko.setGroup("General"); | 413 | cfgko.setGroup("General"); |
414 | mFilterKopi = cfgko.readListEntry("CalendarFilters"); | 414 | mFilterKopi = cfgko.readListEntry("CalendarFilters"); |
415 | cfgka.setGroup("Filter"); | 415 | cfgka.setGroup("Filter"); |
416 | int count = cfgka.readNumEntry( "Count", 0 ); | 416 | int count = cfgka.readNumEntry( "Count", 0 ); |
417 | for ( int i = 0; i < count; i++ ) { | 417 | for ( int i = 0; i < count; i++ ) { |
418 | cfgka.setGroup("Filter_"+QString::number( i ) ); | 418 | cfgka.setGroup("Filter_"+QString::number( i ) ); |
419 | mFilterKapi.append( cfgka.readEntry("Name", "internal error") ); | 419 | mFilterKapi.append( cfgka.readEntry("Name", "internal error") ); |
420 | } | 420 | } |
421 | mFilterOutCal->clear(); | 421 | mFilterOutCal->clear(); |
422 | mFilterInCal->clear(); | 422 | mFilterInCal->clear(); |
423 | mFilterOutAB->clear(); | 423 | mFilterOutAB->clear(); |
424 | mFilterInAB->clear(); | 424 | mFilterInAB->clear(); |
425 | QStringList temp = mFilterKopi; | 425 | QStringList temp = mFilterKopi; |
426 | temp.prepend(i18n("No Filter") ); | 426 | temp.prepend(i18n("No Filter") ); |
427 | mFilterOutCal->insertStringList( temp ); | 427 | mFilterOutCal->insertStringList( temp ); |
428 | mFilterInCal->insertStringList( temp ); | 428 | mFilterInCal->insertStringList( temp ); |
429 | temp = mFilterKapi; | 429 | temp = mFilterKapi; |
430 | temp.prepend(i18n("No Filter") ); | 430 | temp.prepend(i18n("No Filter") ); |
431 | mFilterOutAB->insertStringList( temp ); | 431 | mFilterOutAB->insertStringList( temp ); |
432 | mFilterInAB->insertStringList( temp ); | 432 | mFilterInAB->insertStringList( temp ); |
433 | } | 433 | } |
434 | 434 | ||
435 | void KSyncPrefsDialog::slotOK() | 435 | void KSyncPrefsDialog::slotOK() |
436 | { | 436 | { |
437 | if ( mMyMachineName->text() == "undefined" ) { | 437 | if ( mMyMachineName->text() == "undefined" ) { |
438 | KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error")); | 438 | KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error")); |