-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,66 +1,78 @@ | |||
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 | ||
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 | |||
@@ -768,69 +768,71 @@ | |||
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 | |||
@@ -875,129 +875,128 @@ | |||
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" }, |
@@ -1510,71 +1509,77 @@ | |||
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 | |||
@@ -82,129 +82,128 @@ void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) | |||
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); |
@@ -294,129 +293,129 @@ void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) | |||
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>"); |
@@ -559,66 +558,68 @@ void KOEditorGeneral::readIncidence(Incidence *event) | |||
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 | |||
@@ -55,71 +55,71 @@ class KOEditorGeneral : public QObject | |||
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,91 +1,92 @@ | |||
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 | ||
@@ -188,128 +189,131 @@ void KOEventEditor::setupRecurrence() | |||
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 | } |
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp index 02b54da..607e549 100644 --- a/korganizer/koeventviewer.cpp +++ b/korganizer/koeventviewer.cpp | |||
@@ -343,245 +343,253 @@ void KOEventViewer::appendEvent(Event *event, int mode ) | |||
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()) { |
diff --git a/korganizer/koincidenceeditor.cpp b/korganizer/koincidenceeditor.cpp index 9bc0302..236f6f9 100644 --- a/korganizer/koincidenceeditor.cpp +++ b/korganizer/koincidenceeditor.cpp | |||
@@ -29,128 +29,133 @@ | |||
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 ) |
diff --git a/korganizer/koincidenceeditor.h b/korganizer/koincidenceeditor.h index bfd6cc6..2e4bbf8 100644 --- a/korganizer/koincidenceeditor.h +++ b/korganizer/koincidenceeditor.h | |||
@@ -4,102 +4,103 @@ | |||
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,93 +1,94 @@ | |||
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 | } |
@@ -198,128 +199,131 @@ void KOTodoEditor::setupGeneral() | |||
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(); |
diff --git a/libkdepim/ksyncprefsdialog.cpp b/libkdepim/ksyncprefsdialog.cpp index 1f9afcb..b097277 100644 --- a/libkdepim/ksyncprefsdialog.cpp +++ b/libkdepim/ksyncprefsdialog.cpp | |||
@@ -180,131 +180,131 @@ void KSyncPrefsDialog::setupSyncAlgTab() | |||
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******************************* |