summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt13
-rw-r--r--korganizer/calendarview.cpp15
-rw-r--r--korganizer/calendarview.h1
-rw-r--r--korganizer/kofilterview.cpp2
-rw-r--r--korganizer/kofilterview.h1
-rw-r--r--korganizer/mainwindow.cpp7
6 files changed, 28 insertions, 11 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 593806b..708ac19 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -707,775 +707,786 @@
707{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" }, 707{ "Sync with file \n...%1\nfrom:\n%2\n","Sync mit Datei \n...%1\nvom:\n%2\n" },
708{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Synchronisations�bersicht:\n\n %d items lokal hinzugef�gt\n %d items entfernt hinzugef�gt\n %d items lokal ge�ndert\n %d items entfernt ge�ndert\n %d items lokal gel�scht\n %d items entfernt gel�scht\n" }, 708{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Synchronisations�bersicht:\n\n %d items lokal hinzugef�gt\n %d items entfernt hinzugef�gt\n %d items lokal ge�ndert\n %d items entfernt ge�ndert\n %d items lokal gel�scht\n %d items entfernt gel�scht\n" },
709{ "Synchronization successful","Synchronisation erfolgreich" }, 709{ "Synchronization successful","Synchronisation erfolgreich" },
710{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." }, 710{ "Sync cancelled or failed. Nothing synced.","Sync abgebrochen oder fehlgeschlagen. Nichts wurde gesynced." },
711{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" }, 711{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Sync Datei \n...%1\nexistiert nicht!\nNichts wurde gesynced!\n" },
712{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" }, 712{ "Sync filename(*.ics/*.vcs)","Sync Dateiname(*.ics/*.vcs)" },
713{ "Enter password","Passwort eingeben" }, 713{ "Enter password","Passwort eingeben" },
714{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" }, 714{ "Do you really want\nto remote sync\nwith profile \n","Wollen Sie wirklich\nmit dem entfernten\nProfil syncen: \n" },
715{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." }, 715{ "Copy remote file to local machine...","Kopiere entfernte Datei auf lokalen Rechner..." },
716{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails f�r das Fehlschlagen\nzu erfahren.\n" }, 716{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Sorry, das Kopierkommando schlug fehl!\nKommando war:\n%1\n \nVersuche Kommando von Kosole um\nDetails f�r das Fehlschlagen\nzu erfahren.\n" },
717{ "Writing back file result: ","Resultat des Dateizur�ckschreibens: " }, 717{ "Writing back file result: ","Resultat des Dateizur�ckschreibens: " },
718{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" }, 718{ "Syncronization sucessfully completed","Synchronisation erfolgreich abgeschlossen" },
719{ "Edit Calendar Filters","Editiere Kalendar Filter" }, 719{ "Edit Calendar Filters","Editiere Kalendar Filter" },
720{ "Enter filter name:","Neuer Filter Name:" }, 720{ "Enter filter name:","Neuer Filter Name:" },
721{ "Add Filter","Filter hinzuf�gen" }, 721{ "Add Filter","Filter hinzuf�gen" },
722{ "Question","Frage" }, 722{ "Question","Frage" },
723{ "Filter position: ","Filter Position: " }, 723{ "Filter position: ","Filter Position: " },
724{ "Month View","Monatsansicht" }, 724{ "Month View","Monatsansicht" },
725{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gel�scht werden!" }, 725{ "This profil cannot be deleted!\n","Dieses Profil kann\nnicht gel�scht werden!" },
726{ "KO/Pi config error","KO/Pi Konfig. Fehler" }, 726{ "KO/Pi config error","KO/Pi Konfig. Fehler" },
727{ "Local device name undefined!\nPlease define device name!","Name dieses Ger�tes undefiniert!\nBitte Namen angeben!" }, 727{ "Local device name undefined!\nPlease define device name!","Name dieses Ger�tes undefiniert!\nBitte Namen angeben!" },
728{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen w�hlen!" }, 728{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen w�hlen!" },
729{ "Access: ","Zugriff: " }, 729{ "Access: ","Zugriff: " },
730{ "Needs Action","Aktion notwendig" }, 730{ "Needs Action","Aktion notwendig" },
731{ "Accepted","Akzeptiert" }, 731{ "Accepted","Akzeptiert" },
732{ "Declined","Abgelehnt" }, 732{ "Declined","Abgelehnt" },
733{ "Tentative","Vorl�ufig" }, 733{ "Tentative","Vorl�ufig" },
734{ "Delegated","Beauftragt" }, 734{ "Delegated","Beauftragt" },
735{ "Completed","Vollst�ndig" }, 735{ "Completed","Vollst�ndig" },
736{ "In Process","In Bearbeitung" }, 736{ "In Process","In Bearbeitung" },
737{ "Participant","Teilnehmer" }, 737{ "Participant","Teilnehmer" },
738{ "Optional Participant","M�glicher Teilnehmer" }, 738{ "Optional Participant","M�glicher Teilnehmer" },
739{ "Observer","Beobachter" }, 739{ "Observer","Beobachter" },
740{ "Chair","Vorsitzender" }, 740{ "Chair","Vorsitzender" },
741{ "Not supported \non desktop!\n","" }, 741{ "Not supported \non desktop!\n","" },
742{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die vertikale Auswahl zum Drucken zu bestimmen,\nbitte einen vertikalen Zeitraum (mit gedr�ckter linker Maustaste)\nin einer Spalte ausw�hlen.\n(Es wird danach direkt der Termin Dialog angezeigt\n - dort bitte auf Abbrechen klicken) " }, 742{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die vertikale Auswahl zum Drucken zu bestimmen,\nbitte einen vertikalen Zeitraum (mit gedr�ckter linker Maustaste)\nin einer Spalte ausw�hlen.\n(Es wird danach direkt der Termin Dialog angezeigt\n - dort bitte auf Abbrechen klicken) " },
743{ "Date range: ","Datums Zeitspanne: " }, 743{ "Date range: ","Datums Zeitspanne: " },
744{ "Not supported \non PDA!\n","Nicht verf�gbar\nauf dem PDA. " }, 744{ "Not supported \non PDA!\n","Nicht verf�gbar\nauf dem PDA. " },
745{ "Syncing - close to abort!","Syncing-schlie�e um abzubrechen." }, 745{ "Syncing - close to abort!","Syncing-schlie�e um abzubrechen." },
746{ "Add / remove events","Add./entferne Termine" }, 746{ "Add / remove events","Add./entferne Termine" },
747{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, 747{ "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." },
748{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, 748{ "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." },
749{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde ver�ndert!\nDatei Gr�sse: %1 Bytes.\nZuletzt ge�ndert: %2\nM�chten Sie:\n\n - Speichern und die Datei �berschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, 749{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde ver�ndert!\nDatei Gr�sse: %1 Bytes.\nZuletzt ge�ndert: %2\nM�chten Sie:\n\n - Speichern und die Datei �berschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" },
750{ "Overwrite","�berschreiben" }, 750{ "Overwrite","�berschreiben" },
751{ "Sync+save","Syncen+speichern" }, 751{ "Sync+save","Syncen+speichern" },
752{ "Default","Standard" }, 752{ "Default","Standard" },
753{ " Categories added to list! "," Kategorien zur Liste hinzugef�gt! " }, 753{ " Categories added to list! "," Kategorien zur Liste hinzugef�gt! " },
754{ " %d items?"," %d Eintr�ge?" }, 754{ " %d items?"," %d Eintr�ge?" },
755{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen l�schen m�chten?" }, 755{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen l�schen m�chten?" },
756{ " ?\n\nDelete:\n"," ?\n\nL�sche:\n" }, 756{ " ?\n\nDelete:\n"," ?\n\nL�sche:\n" },
757{ "Current","Aktuelle" }, 757{ "Current","Aktuelle" },
758{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nM�chten sie alle Wiederholungen\nl�schen, oder nur die aktuelle am:\n" }, 758{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nM�chten sie alle Wiederholungen\nl�schen, oder nur die aktuelle am:\n" },
759{ "All","Alle" }, 759{ "All","Alle" },
760{ "Data Loss Warning","Datenverlust Warnung" }, 760{ "Data Loss Warning","Datenverlust Warnung" },
761{ "Proceed","Weitermachen" }, 761{ "Proceed","Weitermachen" },
762{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Eintr�ge k�nnen\nnicht in eine vCalendar\nDatei exportiert werden!" }, 762{ "The journal entries can not be\nexported to a vCalendar file.","Die Journal Eintr�ge k�nnen\nnicht in eine vCalendar\nDatei exportiert werden!" },
763{ "Filter disabled ","Filter abgeschaltet" }, 763{ "Filter disabled ","Filter abgeschaltet" },
764{ "Filter selected: ","Gew�hlter Filter: " }, 764{ "Filter selected: ","Gew�hlter Filter: " },
765{ "Toggle Cancel","Gecancelt �ndern" }, 765{ "Toggle Cancel","Gecancelt �ndern" },
766{ "&Toggle Cancel","Gecancel&t �ndern" }, 766{ "&Toggle Cancel","Gecancel&t �ndern" },
767{ "Configure Toolbar","Konfiguriere Toolbar" }, 767{ "Configure Toolbar","Konfiguriere Toolbar" },
768{ "Stretched TB","Gedehnte TB" }, 768{ "Stretched TB","Gedehnte TB" },
769{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, 769{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" },
770{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, 770{ "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" },
771{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Eintr�ge ignoriert!\nSie k�nnen eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import r�ckg�ngig machen zu k�nnen.\n" }, 771{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Eintr�ge ignoriert!\nSie k�nnen eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import r�ckg�ngig machen zu k�nnen.\n" },
772{ "Not supported \non desktop!\n","Nur verf�gbar auf PDA!" }, 772{ "Not supported \non desktop!\n","Nur verf�gbar auf PDA!" },
773{ "Imported file successfully","Datei erfolgreich importiert" }, 773{ "Imported file successfully","Datei erfolgreich importiert" },
774{ "Error importing file","Fehler beim Importieren der Datei" }, 774{ "Error importing file","Fehler beim Importieren der Datei" },
775{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, 775{ "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" },
776{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\n�berschreiben?\n" }, 776{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\n�berschreiben?\n" },
777{ "Overwrite!","�berschreiben!" }, 777{ "Overwrite!","�berschreiben!" },
778{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Eintr�ge\nwerden nicht importiert!\n" }, 778{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Eintr�ge\nwerden nicht importiert!\n" },
779{ "Load backup filename","Lade Backup Dateiname" }, 779{ "Load backup filename","Lade Backup Dateiname" },
780{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, 780{ "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" },
781{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, 781{ "KO/Pi:Loaded %1","KO/Pi:Geladen %1" },
782{ "Save backup filename","Speichere Backup Dateiname" }, 782{ "Save backup filename","Speichere Backup Dateiname" },
783{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\n�berschreiben?\n" }, 783{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\n�berschreiben?\n" },
784{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, 784{ "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" },
785{ "Details of attendee","Teilnehmerdetails" }, 785{ "Details of attendee","Teilnehmerdetails" },
786{ "Work phone:\n","Telefon Arbeit:\n" }, 786{ "Work phone:\n","Telefon Arbeit:\n" },
787{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, 787{ "Work mobile phone:\n","Mobiltelefon Arbeit:\n" },
788{ "Home phone:\n","Telefon privat:\n" }, 788{ "Home phone:\n","Telefon privat:\n" },
789{ "Mobile home phone:\n","Mobiltelefon privat:\n" }, 789{ "Mobile home phone:\n","Mobiltelefon privat:\n" },
790{ "Email:\n","Email:\n" }, 790{ "Email:\n","Email:\n" },
791{ "Alarm disabled for this item","Alarm deaktiviert f�r dieses Item" }, 791{ "Alarm disabled for this item","Alarm deaktiviert f�r dieses Item" },
792{ "Audio Al.: ","Audio Al.: " }, 792{ "Audio Al.: ","Audio Al.: " },
793{ "Proc.Al.: ","Proz.Al.: " }, 793{ "Proc.Al.: ","Proz.Al.: " },
794{ "No sound set","Kein Sound definiert" }, 794{ "No sound set","Kein Sound definiert" },
795{ "*.wav|Wav Files","*.wav|Wav Dateien" }, 795{ "*.wav|Wav Files","*.wav|Wav Dateien" },
796{ "No program set","Kein Programm definiert" }, 796{ "No program set","Kein Programm definiert" },
797{ "Running '%1'","Ausf�hren '%1'" }, 797{ "Running '%1'","Ausf�hren '%1'" },
798{ "Playing '%1'","Abspielen '%1'" }, 798{ "Playing '%1'","Abspielen '%1'" },
799{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, 799{ "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" },
800{ "Load!","Laden!" }, 800{ "Load!","Laden!" },
801{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nl�scht die aktuellen Daten!\n" }, 801{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nl�scht die aktuellen Daten!\n" },
802{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, 802{ "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" },
803{ "KO/Pi User translation HowTo","KO/Pi Benutzer-�bersetzung HowTo" }, 803{ "KO/Pi User translation HowTo","KO/Pi Benutzer-�bersetzung HowTo" },
804{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 804{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
805{ "Features + hints...","Eigenschaften + Tipps..." }, 805{ "Features + hints...","Eigenschaften + Tipps..." },
806{ "User translation...","Benutzer �bersetzung..." }, 806{ "User translation...","Benutzer �bersetzung..." },
807{ "Sync HowTo...","Synchronisation HowTo..." }, 807{ "Sync HowTo...","Synchronisation HowTo..." },
808{ "Print calendar...","Drucke Kalender..." }, 808{ "Print calendar...","Drucke Kalender..." },
809{ "Anniversary","Jahrestag" }, 809{ "Anniversary","Jahrestag" },
810{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Eintr�ge ignoriert\nwenn sie nicht ver�ndert wurden.\n" }, 810{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Eintr�ge ignoriert\nwenn sie nicht ver�ndert wurden.\n" },
811{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, 811{ "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" },
812{ "Next recurrence is on: ","N�chste Wiederholung ist am:" }, 812{ "Next recurrence is on: ","N�chste Wiederholung ist am:" },
813{ "<b>Alarm on: </b>","<b>Alarm am: </b>" }, 813{ "<b>Alarm on: </b>","<b>Alarm am: </b>" },
814{ "<b>Access: </b>","<b>Zugriff: </b>" }, 814{ "<b>Access: </b>","<b>Zugriff: </b>" },
815{ "(%1 min before)","(%1 min vorher)" }, 815{ "(%1 min before)","(%1 min vorher)" },
816{ "<b>Categories: </b>","<b>Kategorien: </b>" }, 816{ "<b>Categories: </b>","<b>Kategorien: </b>" },
817{ "Save Journal/Description...","Speichere Journal/Details..." }, 817{ "Save Journal/Description...","Speichere Journal/Details..." },
818{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." }, 818{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." },
819{ "Continue","Weitermachen" }, 819{ "Continue","Weitermachen" },
820{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugef�gt" }, 820{ " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugef�gt" },
821{ "Attendee:","Teilnehmer:" }, 821{ "Attendee:","Teilnehmer:" },
822{ "Click OK to search ->","Klicke zum Suchen auf OK ->" }, 822{ "Click OK to search ->","Klicke zum Suchen auf OK ->" },
823{ "On day ","Am Tag " }, 823{ "On day ","Am Tag " },
824{ "%1 of ","%1 des Monats" }, 824{ "%1 of ","%1 des Monats" },
825{ "%1 of the year","%1 des Jahres" }, 825{ "%1 of the year","%1 des Jahres" },
826{ "Anonymous","Anonymo" }, 826{ "Anonymous","Anonymo" },
827{ "nobody@nowhere","niemand@nirgendwo" }, 827{ "nobody@nowhere","niemand@nirgendwo" },
828{ "calendar.html","calendar.html" }, 828{ "calendar.html","calendar.html" },
829{ " Local Time"," Lokale Zeit" }, 829{ " Local Time"," Lokale Zeit" },
830{ "Unknown Name","Unbekannter Name" }, 830{ "Unknown Name","Unbekannter Name" },
831{ "unknown@nowhere","unbekannt@nirgendwo" }, 831{ "unknown@nowhere","unbekannt@nirgendwo" },
832{ "Beam via IR!","Beam via IR!" }, 832{ "Beam via IR!","Beam via IR!" },
833{ "Next Month","N�chster Monat" }, 833{ "Next Month","N�chster Monat" },
834{ "Prio","Prio" }, 834{ "Prio","Prio" },
835{ "Reparent Todo","Mache Sub-Todo" }, 835{ "Reparent Todo","Mache Sub-Todo" },
836{ "tomorrow","morgen" }, 836{ "tomorrow","morgen" },
837{ "today","heute" }, 837{ "today","heute" },
838{ "yesterday","gestern" }, 838{ "yesterday","gestern" },
839{ "Ok","Ok" }, 839{ "Ok","Ok" },
840{ "Ok+Agenda","Ok+Agenda" }, 840{ "Ok+Agenda","Ok+Agenda" },
841{ "Email","Email" }, 841{ "Email","Email" },
842{ "RSVP","RSVP" }, 842{ "RSVP","RSVP" },
843{ "Email:","Email:" }, 843{ "Email:","Email:" },
844{ "Appointment Time ","Termin Zeit " }, 844{ "Appointment Time ","Termin Zeit " },
845{ "2","2" }, 845{ "2","2" },
846{ "3","3" }, 846{ "3","3" },
847{ "4","4" }, 847{ "4","4" },
848{ " 0 %"," 0 %" }, 848{ " 0 %"," 0 %" },
849{ " 20 %"," 20 %" }, 849{ " 20 %"," 20 %" },
850{ " 40 %"," 40 %" }, 850{ " 40 %"," 40 %" },
851{ " 60 %"," 60 %" }, 851{ " 60 %"," 60 %" },
852{ " 80 %"," 80 %" }, 852{ " 80 %"," 80 %" },
853{ "100 %","100 %" }, 853{ "100 %","100 %" },
854{ "Filter","Filter" }, 854{ "Filter","Filter" },
855{ "Configure","Konfiguriere" }, 855{ "Configure","Konfiguriere" },
856{ "What's Next","What's Next" }, 856{ "What's Next","What's Next" },
857{ "Complete calendar...","Kompletten Kalender..." }, 857{ "Complete calendar...","Kompletten Kalender..." },
858{ "Filtered calendar...","Gefilterten Kalender..." }, 858{ "Filtered calendar...","Gefilterten Kalender..." },
859{ "Export to phone","Exportiere zum Handy" }, 859{ "Export to phone","Exportiere zum Handy" },
860{ "Beam receive enabled","Beam Empfang an" }, 860{ "Beam receive enabled","Beam Empfang an" },
861{ "What's new?","Was ist neu?" }, 861{ "What's new?","Was ist neu?" },
862{ "FAQ...","FAQ..." }, 862{ "FAQ...","FAQ..." },
863{ "Licence...","Licence..." }, 863{ "Licence...","Licence..." },
864{ "What's This?","What's This?" }, 864{ "What's This?","What's This?" },
865{ "&Edit...","&Editiere..." }, 865{ "&Edit...","&Editiere..." },
866{ "Oktober","Oktober" }, 866{ "Oktober","Oktober" },
867{ "Title","Titel" }, 867{ "Title","Titel" },
868{ "%1 %","%1 %" }, 868{ "%1 %","%1 %" },
869{ "Enable Pi-Sync","Schalte Pi-Sync an" }, 869{ "Enable Pi-Sync","Schalte Pi-Sync an" },
870{ "Import!","Importiere!" }, 870{ "Import!","Importiere!" },
871{ "inserting birthdays - close to abort!","Burzeltage werden eingef�gt - schlie�e um abzubrechen!" }, 871{ "inserting birthdays - close to abort!","Burzeltage werden eingef�gt - schlie�e um abzubrechen!" },
872{ "Export to phone options","Export ans Handy Optionen" }, 872{ "Export to phone options","Export ans Handy Optionen" },
873{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." }, 873{ "Please read Help-Sync Howto\nto know what settings to use.","Bitte lese Hilfe-Sync Howto\num zu erfahren welche Einstellungen\ndie richtigen sind." },
874{ "I/O device: ","I/O device: " }, 874{ "I/O device: ","I/O device: " },
875{ "Connection: ","Connection: " }, 875{ "Connection: ","Connection: " },
876{ "Model(opt.): ","Model(opt.): " }, 876{ "Model(opt.): ","Model(opt.): " },
877{ "Write back events in future only","Schreibe nur zuk�nftige Termine zur�ck" }, 877{ "Write back events in future only","Schreibe nur zuk�nftige Termine zur�ck" },
878{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " }, 878{ "Max. weeks in future: ","Max. Wochen in der Zukunft: " },
879{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das l�scht alle alten\nTodo/Kalender Daten auf dem Handy!" }, 879{ "NOTE: This will remove all old\ntodo/calendar data on phone!","ACHTUNG: Das l�scht alle alten\nTodo/Kalender Daten auf dem Handy!" },
880{ "Export to mobile phone!","Exportiere auf das Handy!" }, 880{ "Export to mobile phone!","Exportiere auf das Handy!" },
881{ "Export complete calendar","Exportiere kompletten Kalender" }, 881{ "Export complete calendar","Exportiere kompletten Kalender" },
882{ "Writing to phone...","Sende Daten ans Handy..." }, 882{ "Writing to phone...","Sende Daten ans Handy..." },
883{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" }, 883{ " This may take 1-3 minutes!"," Das kann 1-3 Minuten dauern!" },
884{ "Retry","Nochmal versuchen" }, 884{ "Retry","Nochmal versuchen" },
885{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" }, 885{ "KDE/Pim phone access","KDE/Pim Handy Zugriff" },
886{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Ger�t!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" }, 886{ "Error accessing device!\nPlease turn on connection\nand retry!","Fehler beim Zugriff auf das Ger�t!\nBitte die Verbindung aktivieren\nund nochmal versuchen!" },
887{ "Error exporting to phone!","Fehler beim Export auf das Handy!" }, 887{ "Error exporting to phone!","Fehler beim Export auf das Handy!" },
888{ "Export filtered calendar","Exportiere gefilterten Kalender" }, 888{ "Export filtered calendar","Exportiere gefilterten Kalender" },
889{ "Preferences","Vorlieben" }, 889{ "Preferences","Vorlieben" },
890{ "Global","Global" }, 890{ "Global","Global" },
891{ "Phone","Phone" }, 891{ "Phone","Phone" },
892{ "SMS","SMS" }, 892{ "SMS","SMS" },
893{ "Fax","Fax" }, 893{ "Fax","Fax" },
894{ "Pager","Pager" }, 894{ "Pager","Pager" },
895{ "SIP","SIP" }, 895{ "SIP","SIP" },
896{ "Italian","Italienisch" }, 896{ "Italian","Italienisch" },
897{ "24:00","24:00" }, 897{ "24:00","24:00" },
898{ "12:00am","12:00am" }, 898{ "12:00am","12:00am" },
899{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" }, 899{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
900{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" }, 900{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
901{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" }, 901{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
902{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" }, 902{ "Mon 19.04.04: %a %d.%m.%y","Mon 19.04.04: %a %d.%m.%y" },
903{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" }, 903{ "Mon, 19.Apr.04: %a, %d.%b.%y","Mon, 19.Apr.04: %a, %d.%b.%y" },
904{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" }, 904{ "Add 30 min to selected Timezone","Addiere 30 min zur Zeitzone" },
905{ "Used Mail Client","Benutzter Mail Client" }, 905{ "Used Mail Client","Benutzter Mail Client" },
906{ "Channel:","Channel:" }, 906{ "Channel:","Channel:" },
907{ "Message:","Message:" }, 907{ "Message:","Message:" },
908{ "Parameters:","Parameter:" }, 908{ "Parameters:","Parameter:" },
909{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" }, 909{ "HINT: Delimiter=; Name=%1,Email=%2","Hinweis: Begrenzer=; Name=%1,Email=%2" },
910{ "extra Message:","extra Message:" }, 910{ "extra Message:","extra Message:" },
911{ "extra Parameters:","extra Parameter:" }, 911{ "extra Parameters:","extra Parameter:" },
912{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" }, 912{ "HINT: Emails=%1,Attachments=%2","Hinweis: Emails=%1,Attachments=%2" },
913{ "External Apps.","Externe Appl." }, 913{ "External Apps.","Externe Appl." },
914{ "24 hours","24 Std." }, 914{ "24 hours","24 Std." },
915{ "3 hours","3 Std." }, 915{ "3 hours","3 Std." },
916{ "1 hour","1 Std." }, 916{ "1 hour","1 Std." },
917{ "15 minutes","15 Min." }, 917{ "15 minutes","15 Min." },
918{ "5 minutes","5 Min." }, 918{ "5 minutes","5 Min." },
919{ "1 minute","1 Min." }, 919{ "1 minute","1 Min." },
920{ "23","23" }, 920{ "23","23" },
921{ "Mon 15","Mon 15" }, 921{ "Mon 15","Mon 15" },
922{ "Configure KO","Konfiguriere KO" }, 922{ "Configure KO","Konfiguriere KO" },
923{ "Event text","Termin Text" }, 923{ "Event text","Termin Text" },
924{ "ToDo","Todo" }, 924{ "ToDo","Todo" },
925{ "Today","Heute" }, 925{ "Today","Heute" },
926{ "What's Next View","What's Next Ansicht" }, 926{ "What's Next View","What's Next Ansicht" },
927{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" }, 927{ "Allday Agenda view shows todos","Ganztag Agenda zeigt Todos" },
928{ "Alarm","Alarm" }, 928{ "Alarm","Alarm" },
929{ "Used %1 Client","Benutzter %1 Client" }, 929{ "Used %1 Client","Benutzter %1 Client" },
930{ "No email client installed","Kein Email Klient installiert" }, 930{ "No email client installed","Kein Email Klient installiert" },
931{ "Userdefined email client","Benutzerdef. Email Klient" }, 931{ "Userdefined email client","Benutzerdef. Email Klient" },
932{ "OM/Pi email client","OM/Pi Email Klient" }, 932{ "OM/Pi email client","OM/Pi Email Klient" },
933{ "Include in multiple ","Beziehe in multiple " }, 933{ "Include in multiple ","Beziehe in multiple " },
934{ "calendar ","Kalender " }, 934{ "calendar ","Kalender " },
935{ "addressbook ","Adressbuch " }, 935{ "addressbook ","Adressbuch " },
936{ "pwmanager","PWmanager" }, 936{ "pwmanager","PWmanager" },
937{ " sync"," Sync ein" }, 937{ " sync"," Sync ein" },
938{ "Write back synced data","Schreibe gesyncte Daten zur�ck" }, 938{ "Write back synced data","Schreibe gesyncte Daten zur�ck" },
939{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Eintr�ge zur�ck" }, 939{ "-- Write back (on remote) existing entries only","-- Schreibe nur existierende (entfernte) Eintr�ge zur�ck" },
940{ "-- Write back (calendar) entries in future only","-- Schreibe nur zuk�nftige Kalender-Eintr�ge zur�ck" }, 940{ "-- Write back (calendar) entries in future only","-- Schreibe nur zuk�nftige Kalender-Eintr�ge zur�ck" },
941{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " }, 941{ "---- Max. weeks in future: ","---- Max. wochen in der Zukunft: " },
942{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" }, 942{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direktes Kx/Pi zu Kx/Pi sync )" },
943{ "Mobile device (cell phone)","Mobiles Ger�t (Handy)" }, 943{ "Mobile device (cell phone)","Mobiles Ger�t (Handy)" },
944{ "Help...","Hilfe..." }, 944{ "Help...","Hilfe..." },
945{ "Local file Cal:","Lokale Datei Kal:" }, 945{ "Local file Cal:","Lokale Datei Kal:" },
946{ "Local file ABook:","Lokale Datei ABuch:" }, 946{ "Local file ABook:","Lokale Datei ABuch:" },
947{ "Local file PWMgr:","Lokale Datei PWMgr:" }, 947{ "Local file PWMgr:","Lokale Datei PWMgr:" },
948{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" }, 948{ "Addressbook file (*.vcf) is used by KA/Pi","Adressbuch Datei (*.vcf) wird von KA/Pi genutzt" },
949{ "Calendar:","Kalender:" }, 949{ "Calendar:","Kalender:" },
950{ "AddressBook:","AdressBuch:" }, 950{ "AddressBook:","AdressBuch:" },
951{ "PWManager:","PWManager:" }, 951{ "PWManager:","PWManager:" },
952{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" }, 952{ "Addressbook file is used by KA/Pi","Adressbuch Datei wird von KA/Pi genutzt" },
953{ "ssh/scp","ssh/scp" }, 953{ "ssh/scp","ssh/scp" },
954{ "ftp","ftp" }, 954{ "ftp","ftp" },
955{ "Password for remote access: (could be the same for each)","Passwort f�r entfernten Zugriff: (kann dasselbe sein f�r alle)" }, 955{ "Password for remote access: (could be the same for each)","Passwort f�r entfernten Zugriff: (kann dasselbe sein f�r alle)" },
956{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein f�r alle)" }, 956{ "Remote IP address: (could be the same for each)","Entfernte IP Adresse: (kann dasselbe sein f�r alle)" },
957{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte f�r alle unterschiedlich sein)" }, 957{ "Remote port number: (should be different for each)","Entfernte Port Nummer: (Sollte f�r alle unterschiedlich sein)" },
958{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Ger�t" }, 958{ "command for downloading remote file to local device","Kommando zum Download der entfernten Datei zum lokalen Ger�t" },
959{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Ger�t" }, 959{ "command for uploading local temp file to remote device","Kommando zum Upload der lokalen temp. Datei zum entfernten Ger�t" },
960{ "Insert device where\nphone is connected. E.g.:\n","F�ge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" }, 960{ "Insert device where\nphone is connected. E.g.:\n","F�ge Device ein, an dem\ndas Handy angeschlossen ist. Z.B.:\n" },
961{ "KDE-Pim sync config","KDE-Pim sync Konfig" }, 961{ "KDE-Pim sync config","KDE-Pim sync Konfig" },
962{ "Insert kind of connection,e.g.:\n","F�ge Art der Verbindung ein,z.B.:\n" }, 962{ "Insert kind of connection,e.g.:\n","F�ge Art der Verbindung ein,z.B.:\n" },
963{ "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" }, 963{ "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" },
964{ "Port number (Default: %1)","Port Nummer (Default: %1)" }, 964{ "Port number (Default: %1)","Port Nummer (Default: %1)" },
965{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" }, 965{ "Password to enable\naccess from remote:","Passwort um entfernten\nZugriff zuzulassen:" },
966{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" }, 966{ "Automatically start\nat application startup","Starte automatisch\nbeim Programmstart" },
967{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" }, 967{ "Automatically sync\nwith KDE-Desktop","Automatischer Sync\nmit dem KDE-Desktop" },
968{ "Enter port for Pi-Sync","Port Nummer f�r Pi-Sync" }, 968{ "Enter port for Pi-Sync","Port Nummer f�r Pi-Sync" },
969{ "Disable Pi-Sync","Schalte Pi-Sync aus" }, 969{ "Disable Pi-Sync","Schalte Pi-Sync aus" },
970{ "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!" }, 970{ "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!" },
971{ "KDE-Pim Sync","KDE-Pim Sync" }, 971{ "KDE-Pim Sync","KDE-Pim Sync" },
972{ "Multiple profiles","Multi-Sync Profile" }, 972{ "Multiple profiles","Multi-Sync Profile" },
973{ "Device: ","Ger�t: " }, 973{ "Device: ","Ger�t: " },
974{ "Multiple sync started.","Multi-Sync gestartet." }, 974{ "Multiple sync started.","Multi-Sync gestartet." },
975{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert f�r Multi-Sync" }, 975{ "Nothing synced! No profiles defined for multisync!","Nichts gesynct! Keine Profile\nselektiert f�r Multi-Sync" },
976{ "Turn filter on","Schalte Filter an" }, 976{ "Turn filter on","Schalte Filter an" },
977{ "Turn filter off","Schalte Filter aus" }, 977{ "Turn filter off","Schalte Filter aus" },
978{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" }, 978{ "Key bindings KOrganizer/Pi","Tastatur Belegung KOrganizer/Pi" },
979{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgesch�tzt</p>\n" }, 979{ "<p><b>White</b>: Item readonly</p>\n","<p><b>Weiss</b>: Eintrag schreibgesch�tzt</p>\n" },
980{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" }, 980{ "<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n","<p><b>Dunkelgelb</b>: Termin/Todo mit Teilnehmern.</p>\n" },
981{ "<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" }, 981{ "<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" },
982{ "<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" }, 982{ "<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" },
983{ "<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" }, 983{ "<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" },
984{ "<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" }, 984{ "<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" },
985{ "<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" }, 985{ "<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" },
986{ "<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" }, 986{ "<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" },
987{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" }, 987{ "<p><h2>KO/Pi icon colors:</h2></p>\n","<p><h2>KO/Pi Icon Farben:</h2></p>\n" },
988{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" }, 988{ "<p><b>E</b>: Edit item</p>\n","<p><b>E</b>: Editiere Eintrag</p>\n" },
989{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" }, 989{ "<p><b>A</b>: Show agenda view.</p>\n","<p><b>A</b>: Zeige Agenda Ansicht.</p>\n" },
990{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schlie�e Dialog.</p>\n" }, 990{ "<p><b>I,C</b>: Close dialog.</p>\n","<p><b>I,C</b>: Schlie�e Dialog.</p>\n" },
991{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" }, 991{ "<p><h3>In event/todo viewer:</h3></p>\n","<p><h3>In Termin/Todo Detail-Anzeige:</h3></p>\n" },
992{ "<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" }, 992{ "<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" },
993{ "<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" }, 993{ "<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" },
994{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: N�chster/vorheriger Eintrag</p>\n" }, 994{ "<p><b>up/down</b>: Next/prev item</p>\n","<p><b>up/down</b>: N�chster/vorheriger Eintrag</p>\n" },
995{ "<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" }, 995{ "<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" },
996{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" }, 996{ "<p><b>return</b>: Select item+one step down</p>\n","<p><b>return</b>: Selektiere Item+Cursor einen Eintrag runter</p>\n" },
997{ "<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" }, 997{ "<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" },
998{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" }, 998{ "<p><h3>In list view:</h3></p>\n","<p><h3>In Listen Ansicht:</h3></p>\n" },
999{ "<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" }, 999{ "<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" },
1000{ "<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" }, 1000{ "<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" },
1001{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" }, 1001{ "<p><b>Q</b>: Toggle quick todo line edit.</p>\n","<p><b>Q</b>: Zeige/verstecke Quick Todo Eingabe Zeile.</p>\n" },
1002{ "<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" }, 1002{ "<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" },
1003{ "<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" }, 1003{ "<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" },
1004{ "<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" }, 1004{ "<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" },
1005{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" }, 1005{ "<p><h3>In todo view:</h3></p>\n","<p><h3>In Todo Anzige:</h3></p>\n" },
1006{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" }, 1006{ "<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n","<p><b>ctrl+up/down</b>: Scrolle kleine Todo Ansicht</p>\n" },
1007{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" }, 1007{ "<p><b>up/down</b>: Scroll agenda view</p>\n","<p><b>up/down</b>: Scrolle Agenda Ansicht</p>\n" },
1008{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" }, 1008{ "<p><h3>In agenda view:</h3></p>\n","<p><h3>In Agenda Ansicht:</h3></p>\n" },
1009{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: L�sche selektiertes Item</p>\n" }, 1009{ "<p><b>del,backspace</b>: Delete selected item</p>\n","<p><b>del,backspace</b>: L�sche selektiertes Item</p>\n" },
1010{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" }, 1010{ "<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n","<p><b>left</b>: Vorh. Woche | <b>left+ctrl</b>: Vorh. Monat</p>\n" },
1011{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: N�chste Woche | <b>right+ctrl</b>: N�chste Woche</p>\n" }, 1011{ "<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n","<p><b>right</b>: N�chste Woche | <b>right+ctrl</b>: N�chste Woche</p>\n" },
1012{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" }, 1012{ "<p><b>B</b>: Edit description (details) of selected item</p>\n","<p><b>B</b>: Editiere Beschreibung (Details) des selektierten Items</p>\n" },
1013{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" }, 1013{ "<p><b>C</b>: Show current time in agenda view</p>\n","<p><b>C</b>: Zeige aktuelle Zeit in Agenda Ansicht</p>\n" },
1014{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda H�he</p>\n" }, 1014{ "<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n","<p><b>+,-</b> : Zoom rein/raus Agenda | <b>A</b>: Wechsle Ganztag Agenda H�he</p>\n" },
1015{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: F�ge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" }, 1015{ "<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n","<p><b>S+ctrl</b>: F�ge Sub-Todo hinzu | <b>X+ctrl</b>: Zeige/verstecke Datumsnavigator</p>\n" },
1016{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" }, 1016{ "<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n","<p><b>T</b>: Gehe zu Heute | <b>T+ctrl</b>: Neues Todo</p>\n" },
1017{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" }, 1017{ "<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n","<p><b>E</b>: Editiere selektiertes Item |<b> E+ctrl</b>: Neuer Termin</p>\n" },
1018{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" }, 1018{ "<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n","<p><b>D</b>: Ein-Tages Ansicht | <b>M</b>: Monatsansicht</p>\n" },
1019{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" }, 1019{ "<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n","<p><b>Z,Y</b>: Arbeitswochenansicht | <b>U</b>: Wochenansicht</p>\n" },
1020{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" }, 1020{ "<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n","<p><b>V</b>: Todo Ansicht | <b>L</b>: Termin Listen Ansicht</p>\n" },
1021{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: N�chste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " }, 1021{ "<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ","<p><b>X</b>: N�chste-X-Tage Ansicht | <b>W</b>: What's Next Ansicht\n " },
1022{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" }, 1022{ "<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n","<p><b>1-0</b> (+<b>ctrl</b>): Selektiere Filter 1-10 (11-20)</p>\n" },
1023{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" }, 1023{ "<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n","<p><b>O</b>: Filter An/Aus | <b>J</b>: Journal Ansicht</p>\n" },
1024{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" }, 1024{ "<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n","<p><b>Space</b>: Zeige fullscreen | <b>P</b>: Datums Picker</p>\n" },
1025{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) f�r selektiertes Item</p>\n" }, 1025{ "<p><b>I</b>: Show info for selected event/todo</p>\n","<p><b>I</b>: Zeige Info (Details) f�r selektiertes Item</p>\n" },
1026{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" }, 1026{ "<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n","<p><b>H</b>: Dieser Hilfe Dialog | <b>S</b>: Such Dialog</p>\n" },
1027{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" }, 1027{ "<p><h2>KO/Pi key shortcuts:</h2></p>\n","<p><h2>KO/Pi Tastatur Kurzbefehle:</h2></p>\n" },
1028{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas ge�ndert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgr�nden wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\n�nderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie k�nnen eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" }, 1028{ "After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n","Nachdem etwas ge�ndert wurde, werden die\nDaten automatisch in die Datei abgespeichert\n~/kdepim/apps/korganizer/mycalendar.ics\nnach (konfigurierbar) drei Minuten.\nAus Sicherheitsgr�nden wird noch einmal\nnach 10 Min. abgespeichert, wenn keine\n�nderungen vorgenommen wurden. Die \nDaten werden automatisch gespeichert,\nwenn KO/Pi beendet wird.\nSie k�nnen eine Backup-Datei erstellen im\nMenu: Datei - Speichere Kalender Backup\n" },
1029{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" }, 1029{ "Auto Saving in KOrganizer/Pi","Auto Speichern in KOrganizer/Pi" },
1030{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" }, 1030{ "\nhttp://sourceforge.net/projects/kdepimpi\n","\nhttp://sourceforge.net/projects/kdepimpi\n" },
1031{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" }, 1031{ "\nor report them in the bugtracker on\n","\noder trage sie in dem Bugtracker ein auf\n" },
1032{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" }, 1032{ "\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n","\nBitte melde fehlerhaftes Verhalten an\nlutz@pi-sync.info\n" },
1033{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nf�r den Zaurus ist verf�gbar\nals zus�tzliche Anwendung\n" }, 1033{ "2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n","2) Ein Audio Alarm Daemon\nf�r den Zaurus ist verf�gbar\nals zus�tzliche Anwendung\n" },
1034{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann m�glicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterst�tzt.\n" }, 1034{ "1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n","1) Importieren von *.vcs oder *.ics Dateien von\nanderen Anwendungen kann m�glicherweise\n nicht richtig funktionieren,\nwenn die Termine Eigenschaften haben,\ndie KO/Pi nicht unterst�tzt.\n" },
1035{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" }, 1035{ "Known Problems in KOrganizer/Pi","Bekannte Probleme in KOrganizer/Pi" },
1036{ "KO/Pi FAQ","KO/Pi FAQ" }, 1036{ "KO/Pi FAQ","KO/Pi FAQ" },
1037{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nf�r: Zaurus 5x00/7x0/860/3000/6000\n" }, 1037{ "PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n","PDA-Edition\nf�r: Zaurus 5x00/7x0/860/3000/6000\n" },
1038{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" }, 1038{ "KOrganizer/Platform-independent\n","KOrganizer/Platform-independent\n" },
1039{ "About KOrganizer/Pi","�ber KOrganizer/Pi" }, 1039{ "About KOrganizer/Pi","�ber KOrganizer/Pi" },
1040{ "From: ","Von: " }, 1040{ "From: ","Von: " },
1041{ "Remove sync info","Entferne Sync Info" }, 1041{ "Remove sync info","Entferne Sync Info" },
1042{ "For all profiles","F�r alle Profile" }, 1042{ "For all profiles","F�r alle Profile" },
1043{ "Hide not Running","Verstecke nicht Laufende" }, 1043{ "Hide not Running","Verstecke nicht Laufende" },
1044{ "ME","ME" }, 1044{ "ME","ME" },
1045{ "Toolbar","Toolbar" }, 1045{ "Toolbar","Toolbar" },
1046{ "Undo Delete...","L�schen r�ckg�ngig machen..." }, 1046{ "Undo Delete...","L�schen r�ckg�ngig machen..." },
1047{ "Undo Delete","L�schen r�ckg�ngig machen" }, 1047{ "Undo Delete","L�schen r�ckg�ngig machen" },
1048{ "KDE Sync HowTo...","KDE Sync HowTo..." }, 1048{ "KDE Sync HowTo...","KDE Sync HowTo..." },
1049{ "Multi Sync HowTo...","Multi Sync HowTo..." }, 1049{ "Multi Sync HowTo...","Multi Sync HowTo..." },
1050{ "Januar","Januar" }, 1050{ "Januar","Januar" },
1051{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" }, 1051{ "KO/Pi Keys + Colors","KO/Pi Tasten + Farben" },
1052{ "No Filter","Kein Filter" }, 1052{ "No Filter","Kein Filter" },
1053{ "Multiple Sync options","Multi Sync Optionen" }, 1053{ "Multiple Sync options","Multi Sync Optionen" },
1054{ "Sync algo options","Sync Ablauf Optionen" }, 1054{ "Sync algo options","Sync Ablauf Optionen" },
1055{ "Apply filter when adding data to local:","Filter f�r das Hinzuf�gen von Daten zu Lokal:" }, 1055{ "Apply filter when adding data to local:","Filter f�r das Hinzuf�gen von Daten zu Lokal:" },
1056{ "Incoming calendar filter:","Eingehender Kalender Filter:" }, 1056{ "Incoming calendar filter:","Eingehender Kalender Filter:" },
1057{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" }, 1057{ "Incoming addressbook filter:","Eingehender Adressbuch Filter:" },
1058{ "Write back options","Optionen zum Zur�ckschreiben" }, 1058{ "Write back options","Optionen zum Zur�ckschreiben" },
1059{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Eintr�ge zur�ck" }, 1059{ "Write back (on remote) existing entries only","Schreibe nur existierende (auf Entfernt) Eintr�ge zur�ck" },
1060{ "Apply filter when adding data to remote:","Filter f�r das Hinzuf�gen von Daten zu Entfernt:" }, 1060{ "Apply filter when adding data to remote:","Filter f�r das Hinzuf�gen von Daten zu Entfernt:" },
1061{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" }, 1061{ "Outgoing calendar filter:","Ausgehender Kalender Filter:" },
1062{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" }, 1062{ "Outgoing addressbook filter:","Ausgehender Adressbuch Filter:" },
1063{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Eintr�ge f�r Zeitspanne zur�ck" }, 1063{ "Write back (calendar) entries for time period only","Schreibe nur Kalender Eintr�ge f�r Zeitspanne zur�ck" },
1064{ "Time period","Zeitspanne" }, 1064{ "Time period","Zeitspanne" },
1065{ "From ","Von " }, 1065{ "From ","Von " },
1066{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " }, 1066{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
1067{ " weeks in the future "," Wochen in der Zukunft " }, 1067{ " weeks in the future "," Wochen in der Zukunft " },
1068{ "Profile kind specific settings","Profil Art abh�ngige Einstellungen" }, 1068{ "Profile kind specific settings","Profil Art abh�ngige Einstellungen" },
1069{ "Local temp file:","Lokale temp Datei:" }, 1069{ "Local temp file:","Lokale temp Datei:" },
1070{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" }, 1070{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
1071{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" }, 1071{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
1072{ "Language","Sprache" }, 1072{ "Language","Sprache" },
1073{ "Time Format","Zeit Format" }, 1073{ "Time Format","Zeit Format" },
1074{ "Time Zone","Zeit Zone" }, 1074{ "Time Zone","Zeit Zone" },
1075{ "%1 groups subscribed","%1 Guppen abboniert" }, 1075{ "%1 groups subscribed","%1 Guppen abboniert" },
1076{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" }, 1076{ "Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail","Aktuelles Speicherverzeichnis ist:\n%1\nIhre Mail wird gespeichert in:\n(speicherverz.)/apps/kopiemail/localmail" },
1077{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" }, 1077{ "<b>New data storage dir:</b>","<b>Neues Datenspeicherverzeichnis:</b>" },
1078{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" }, 1078{ "New dirs are created automatically","Neue Verzeichnisse werden aut. erstellt" },
1079{ "Save settings","Speichere Einstellungen" }, 1079{ "Save settings","Speichere Einstellungen" },
1080{ "Save standard","Speichere Standard" }, 1080{ "Save standard","Speichere Standard" },
1081{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" }, 1081{ "<b>New settings are used\nafter a restart</b>","<b>Neue Einstellungen werden nach\neinem Neustart genutzt</b>" },
1082{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" }, 1082{ "Settings are stored in\n%1","Einstellungen werden gespeichert in:\n%1" },
1083{ "Data storage path","Daten Speicherpfad" }, 1083{ "Data storage path","Daten Speicherpfad" },
1084{ "Language","Sprache" }, 1084{ "Language","Sprache" },
1085{ "Show time in agenda items","Zeige Zeit in Agenda Items" }, 1085{ "Show time in agenda items","Zeige Zeit in Agenda Items" },
1086{ "Color for Sundays + category "Holiday"","Farbe f�r Sonntags + Kategorie "Feiertag"" }, 1086{ "Color for Sundays + category "Holiday"","Farbe f�r Sonntags + Kategorie "Feiertag"" },
1087{ "Show events that are done","Zeige abgelaufene Termine" }, 1087{ "Show events that are done","Zeige abgelaufene Termine" },
1088{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" }, 1088{ "Hide not running Todos in To-do view","Verstecke nicht laufende Todos" },
1089{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" }, 1089{ "+01:00 Europe/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
1090{ "KO/Pi","KO/Pi" }, 1090{ "KO/Pi","KO/Pi" },
1091{ "There is nothing to undo!","Es gibt nichts zum\nR�ckg�ngigmachen!" }, 1091{ "There is nothing to undo!","Es gibt nichts zum\nR�ckg�ngigmachen!" },
1092{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." }, 1092{ "Recreating edit dialog. Please wait...","Recreating edit dialog. Please wait..." },
1093{ "Sound.Al.: ","Sound.Al.: " }, 1093{ "Sound.Al.: ","Sound.Al.: " },
1094{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" }, 1094{ "From: %1 To: %2 %3","Von: %1 Bis: %2 %3" },
1095{ "Restore","Wiederherstellen" }, 1095{ "Restore","Wiederherstellen" },
1096{ "\nAre you sure you want\nto restore this?","\nM�chten Sie das wirklich\nwiederherstellen?" }, 1096{ "\nAre you sure you want\nto restore this?","\nM�chten Sie das wirklich\nwiederherstellen?" },
1097{ "% completed","% erledigt" }, 1097{ "% completed","% erledigt" },
1098{ "%d item(s) found.","%d Item(s) gefunden." }, 1098{ "%d item(s) found.","%d Item(s) gefunden." },
1099{ "Set complete","Setze auf erledigt" }, 1099{ "Set complete","Setze auf erledigt" },
1100{ "(cancelled)","(gecancelt)" }, 1100{ "(cancelled)","(gecancelt)" },
1101{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" }, 1101{ "Click on the week number to\nshow week in agenda view","Klicke auf die Wochennummer\num die Woche in der Agenda anzuzeigen" },
1102{ " Local time "," Locale Zeit " }, 1102{ " Local time "," Locale Zeit " },
1103{ "Form2","Form2" }, 1103{ "Form2","Form2" },
1104{ "Filter enabled","Filter angeschaltet" }, 1104{ "Filter enabled","Filter angeschaltet" },
1105{ "Edit Filters","�ndere Filter" }, 1105{ "Edit Filters","�ndere Filter" },
1106{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1106{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1107{ "Agenda","Agenda" }, 1107{ "Agenda","Agenda" },
1108{ " ("," (" }, 1108{ " ("," (" },
1109{ "<p><b>Due on:</b> %1</p>","<p><b>F�llig am:</b> %1</p>" }, 1109{ "<p><b>Due on:</b> %1</p>","<p><b>F�llig am:</b> %1</p>" },
1110{ "Print","Print" }, 1110{ "Print","Print" },
1111{ "&Setup Printer...","Drucker &Setup..." }, 1111{ "&Setup Printer...","Drucker &Setup..." },
1112{ "View Type","Zeige Typ" }, 1112{ "View Type","Zeige Typ" },
1113{ "Page &orientation:","Seiten Ausrichtung:" }, 1113{ "Page &orientation:","Seiten Ausrichtung:" },
1114{ "Use Default of Selected Style","Default des selektierten Stils" }, 1114{ "Use Default of Selected Style","Default des selektierten Stils" },
1115{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1115{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1116{ "Portrait","Portrait" }, 1116{ "Portrait","Portrait" },
1117{ "Landscape","Landschaft" }, 1117{ "Landscape","Landschaft" },
1118{ "Print day","Drucke Tag" }, 1118{ "Print day","Drucke Tag" },
1119{ "CalPrintDay_Base","CalPrintDay_Base" }, 1119{ "CalPrintDay_Base","CalPrintDay_Base" },
1120{ "Date && Time Range","Datum && Zeitspanne" }, 1120{ "Date && Time Range","Datum && Zeitspanne" },
1121{ "&End date:","&Enddatum:" }, 1121{ "&End date:","&Enddatum:" },
1122{ "&Start date:","&Startdatum:" }, 1122{ "&Start date:","&Startdatum:" },
1123{ "Start &time:","Startzeit:" }, 1123{ "Start &time:","Startzeit:" },
1124{ "End ti&me:","Endzeit:" }, 1124{ "End ti&me:","Endzeit:" },
1125{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, 1125{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1126{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen f�llig sind" }, 1126{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen f�llig sind" },
1127{ "Alt+D","Alt+D" }, 1127{ "Alt+D","Alt+D" },
1128{ "&Use colors","Nutze Farben" }, 1128{ "&Use colors","Nutze Farben" },
1129{ "Alt+U","Alt+U" }, 1129{ "Alt+U","Alt+U" },
1130{ "Print week","Drucke Woche" }, 1130{ "Print week","Drucke Woche" },
1131{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1131{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1132{ "Use &colors","Nutze Farben" }, 1132{ "Use &colors","Nutze Farben" },
1133{ "Type of View","Typ der Ansicht" }, 1133{ "Type of View","Typ der Ansicht" },
1134{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1134{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1135{ "Alt+F","Alt+F" }, 1135{ "Alt+F","Alt+F" },
1136{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1136{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1137{ "Alt+T","Alt+T" }, 1137{ "Alt+T","Alt+T" },
1138{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1138{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1139{ "Print month","Drucke Monat" }, 1139{ "Print month","Drucke Monat" },
1140{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1140{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1141{ "&Start month:","&Startmonat:" }, 1141{ "&Start month:","&Startmonat:" },
1142{ "&End month:","&Endmonat:" }, 1142{ "&End month:","&Endmonat:" },
1143{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1143{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1144{ "Print todos","Drucke Todos" }, 1144{ "Print todos","Drucke Todos" },
1145{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1145{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1146{ "Include &description of the item","Inclusive Itembeschreibung" }, 1146{ "Include &description of the item","Inclusive Itembeschreibung" },
1147{ "Include d&ue date of the item","Inclusive F�lligkeitsdatum des Items" }, 1147{ "Include d&ue date of the item","Inclusive F�lligkeitsdatum des Items" },
1148{ "Include &priority of the item","Inclusive Priorit�t des Items" }, 1148{ "Include &priority of the item","Inclusive Priorit�t des Items" },
1149{ "Items to Print","Zu druckende Items" }, 1149{ "Items to Print","Zu druckende Items" },
1150{ "&From:","Von:" }, 1150{ "&From:","Von:" },
1151{ "&To:","Bis:" }, 1151{ "&To:","Bis:" },
1152{ "Print &all todo items","Drucke alle Todo Items" }, 1152{ "Print &all todo items","Drucke alle Todo Items" },
1153{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1153{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1154{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1154{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1155{ "Todo List","Todo Liste" }, 1155{ "Todo List","Todo Liste" },
1156{ "&Title:","&Titel:" }, 1156{ "&Title:","&Titel:" },
1157{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, 1157{ "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" },
1158{ "Todo list","Todo Liste" }, 1158{ "Todo list","Todo Liste" },
1159{ "&Print...","Drucke..." }, 1159{ "&Print...","Drucke..." },
1160{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1160{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1161{ "[Unconfigured]","[Unkonfiguriert]" }, 1161{ "[Unconfigured]","[Unkonfiguriert]" },
1162{ "OK","OK" }, 1162{ "OK","OK" },
1163{ "FilterEditor","FilterEditor" }, 1163{ "FilterEditor","FilterEditor" },
1164{ "Include","Inclusive" }, 1164{ "Include","Inclusive" },
1165{ "Exclude","Exclusive" }, 1165{ "Exclude","Exclusive" },
1166{ "Edit Selection...","Editiere Auswahl" }, 1166{ "Edit Selection...","Editiere Auswahl" },
1167{ "recurring events","wiederholende Termine" }, 1167{ "recurring events","wiederholende Termine" },
1168{ "recurr. events","wiederh.Termine" }, 1168{ "recurr. events","wiederh.Termine" },
1169{ "completed to-dos","erledigte Todos" }, 1169{ "completed to-dos","erledigte Todos" },
1170{ "events","Termine" }, 1170{ "events","Termine" },
1171{ "todos","Todos" }, 1171{ "todos","Todos" },
1172{ "journals","Journale" }, 1172{ "journals","Journale" },
1173{ "public","�ffentl." }, 1173{ "public","�ffentl." },
1174{ "private","privat" }, 1174{ "private","privat" },
1175{ "confidential","vertraul." }, 1175{ "confidential","vertraul." },
1176{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gel�scht!" }, 1176{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gel�scht!" },
1177{ "Yesterday","Gestern" }, 1177{ "Yesterday","Gestern" },
1178{ "Day after tomorrow","�bermorgen" }, 1178{ "Day after tomorrow","�bermorgen" },
1179{ "Tomorrow","Morgen" }, 1179{ "Tomorrow","Morgen" },
1180{ "Day before yesterday","Vorgestern" }, 1180{ "Day before yesterday","Vorgestern" },
1181{ "Size %1","Gr��e %1" }, 1181{ "Size %1","Gr��e %1" },
1182{ "New Agendasize: %1","Neue Agendagr��e: %1" }, 1182{ "New Agendasize: %1","Neue Agendagr��e: %1" },
1183{ " (%1 y.)"," (%1 J.)" }, 1183{ " (%1 y.)"," (%1 J.)" },
1184{ "Allday:","Ganzt�gig:" }, 1184{ "Allday:","Ganzt�gig:" },
1185{ "compl.todos","erled.Todos" }, 1185{ "compl.todos","erled.Todos" },
1186{ "Day view","Tagesansicht" }, 1186{ "Day view","Tagesansicht" },
1187{ "Next days","N�chste Tage" }, 1187{ "Next days","N�chste Tage" },
1188{ "Next week","N�chste Woche" }, 1188{ "Next week","N�chste Woche" },
1189{ "Next two weeks","N�chste zwei Wochen" }, 1189{ "Next two weeks","N�chste zwei Wochen" },
1190{ "This month","Dieser Monat" }, 1190{ "This month","Dieser Monat" },
1191{ "Journal view","Journal" }, 1191{ "Journal view","Journal" },
1192{ "Display all opened","Zeige alle ge�ffnet" }, 1192{ "Display all opened","Zeige alle ge�ffnet" },
1193{ "Display all closed","Zeige alle geschlossen" }, 1193{ "Display all closed","Zeige alle geschlossen" },
1194{ "Display all flat","Zeige alle flach" }, 1194{ "Display all flat","Zeige alle flach" },
1195{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1195{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1196{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1196{ "Default todo done color:","Standard Todo erledigt Farbe" },
1197{ "Select week %1-%2","W�hle Woche %1-%2" }, 1197{ "Select week %1-%2","W�hle Woche %1-%2" },
1198{ "Select Week","W�hle Woche" }, 1198{ "Select Week","W�hle Woche" },
1199{ "Set alarm for selected...","Setze Alarm f�r Selekt..." }, 1199{ "Set alarm for selected...","Setze Alarm f�r Selekt..." },
1200{ "Set Alarm!","Setze Alarm!" }, 1200{ "Set Alarm!","Setze Alarm!" },
1201{ "Changed alarm for %1 items","Alarm f�r %1 Items ge�ndert" }, 1201{ "Changed alarm for %1 items","Alarm f�r %1 Items ge�ndert" },
1202{ " and "," und " }, 1202{ " and "," und " },
1203{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, 1203{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1204{ "Mail to selected","Mail an Ausgew�hlte" }, 1204{ "Mail to selected","Mail an Ausgew�hlte" },
1205{ "Mail to all","Mail an Alle" }, 1205{ "Mail to all","Mail an Alle" },
1206{ "Week view mode uses bigger font","Wochenansicht Modus nutzt gr��eren Font" }, 1206{ "Week view mode uses bigger font","Wochenansicht Modus nutzt gr��eren Font" },
1207{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, 1207{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1208{ " on"," am" }, 1208{ " on"," am" },
1209{ " completed on "," erledigt am " }, 1209{ " completed on "," erledigt am " },
1210{ "Save as Event template","Speichere als Vorlage" }, 1210{ "Save as Event template","Speichere als Vorlage" },
1211{ "Load Event template","Lade Termin Vorlage" }, 1211{ "Load Event template","Lade Termin Vorlage" },
1212{ "Save as Journal template","Speichere als Journal Vorlage" }, 1212{ "Save as Journal template","Speichere als Journal Vorlage" },
1213{ "Insert Journal template","F�ge Journal Vorlage ein" }, 1213{ "Insert Journal template","F�ge Journal Vorlage ein" },
1214{ "Sub todos:<br>","Unter Todos:<br>" }, 1214{ "Sub todos:<br>","Unter Todos:<br>" },
1215{ "Parent todo:<br>","�ber Todo:<br>" }, 1215{ "Parent todo:<br>","�ber Todo:<br>" },
1216{ "Set current as color category","Setze Gew�hlte als Farbkategorie" }, 1216{ "Set current as color category","Setze Gew�hlte als Farbkategorie" },
1217{ " completed"," erledigt" }, 1217{ " completed"," erledigt" },
1218{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden f�r\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nf�r intensives Testen!" }, 1218{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden f�r\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nf�r intensives Testen!" },
1219{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 1219{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1220{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 1220{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1221{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 1221{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1222{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeit�berschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 1222{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeit�berschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1223{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 1223{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1224{ "Error","Fehler" }, 1224{ "Error","Fehler" },
1225{ ""You entered an invalid date!\n Date changed to current date.","Ung�ltiges Datum eingegeben.\nSetze heutiges Datum." }, 1225{ ""You entered an invalid date!\n Date changed to current date.","Ung�ltiges Datum eingegeben.\nSetze heutiges Datum." },
1226{ "You entered an invalid date!\n Will use current date instead.","Ung�ltiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 1226{ "You entered an invalid date!\n Will use current date instead.","Ung�ltiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1227{ "Warning","Warnung" }, 1227{ "Warning","Warnung" },
1228{ "Select week number","W�hle Wochen Nummer" }, 1228{ "Select week number","W�hle Wochen Nummer" },
1229{ "Februar","Februar" }, 1229{ "Februar","Februar" },
1230{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche gro� zu zeigen" }, 1230{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche gro� zu zeigen" },
1231{ "W","W" }, 1231{ "W","W" },
1232{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuw�hlen" }, 1232{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuw�hlen" },
1233{ "T: %1","T: %1" }, 1233{ "T: %1","T: %1" },
1234{ "Start: ","Start: " }, 1234{ "Start: ","Start: " },
1235{ "Pi-Sync options for device: ","Pi-Sync Einstellungen f�r Ger�t: " }, 1235{ "Pi-Sync options for device: ","Pi-Sync Einstellungen f�r Ger�t: " },
1236{ "Password for remote access:","Passwort f�r fernen Zugriff:" }, 1236{ "Password for remote access:","Passwort f�r fernen Zugriff:" },
1237{ "Remote IP address:","Ferne IP Adresse:" }, 1237{ "Remote IP address:","Ferne IP Adresse:" },
1238{ "Remote port number:","Ferne Port Nummer:" }, 1238{ "Remote port number:","Ferne Port Nummer:" },
1239{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 1239{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1240{ "Remote from: ","Fern von: " }, 1240{ "Remote from: ","Fern von: " },
1241{ "Local from: ","Lokal von: " }, 1241{ "Local from: ","Lokal von: " },
1242{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisations�bersicht:\n\n %d lokal hinzugef�gt\n %d fern hinzugef�gt\n %d lokal ge�ndert\n %d fern ge�ndert\n %d lokal gel�scht\n %d fern gel�scht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 1242{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisations�bersicht:\n\n %d lokal hinzugef�gt\n %d fern hinzugef�gt\n %d lokal ge�ndert\n %d fern ge�ndert\n %d lokal gel�scht\n %d fern gel�scht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1243{ "Local calendar changed!\n","Lokaler Kalender ge�ndert!\n" }, 1243{ "Local calendar changed!\n","Lokaler Kalender ge�ndert!\n" },
1244{ "Write back","Schreibe zur�ck" }, 1244{ "Write back","Schreibe zur�ck" },
1245{ "KO/Pi Synchronization","KO/Pi Synchronisation" }, 1245{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1246{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 1246{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1247{ "Received sync request","Sync Anfrage erhalten" }, 1247{ "Received sync request","Sync Anfrage erhalten" },
1248{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschl�gt kann\ndieser Dialog geschlossen werden." }, 1248{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschl�gt kann\ndieser Dialog geschlossen werden." },
1249{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 1249{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1250{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 1250{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1251{ "Sending file...","Sende Datei..." }, 1251{ "Sending file...","Sende Datei..." },
1252{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 1252{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1253{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 1253{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1254{ "Received %1 bytes","%1 Bytes erhalten" }, 1254{ "Received %1 bytes","%1 Bytes erhalten" },
1255{ "Writing file to disk...","Speichere Datei..." }, 1255{ "Writing file to disk...","Speichere Datei..." },
1256{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 1256{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1257{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Ger�te\nist %1 Sekunden!" }, 1257{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Ger�te\nist %1 Sekunden!" },
1258{ "Synchronize!","Synchronisiere!" }, 1258{ "Synchronize!","Synchronisiere!" },
1259{ "High clock skew!","Gro�er Uhrzeitunterschied!" }, 1259{ "High clock skew!","Gro�er Uhrzeitunterschied!" },
1260{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 1260{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1261{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Ger�te\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie k�nnen\nfalsche Sync-Resultate erhalten!\nBitte das Syncen best�tigen!" }, 1261{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Ger�te\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie k�nnen\nfalsche Sync-Resultate erhalten!\nBitte das Syncen best�tigen!" },
1262{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, 1262{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1263{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, 1263{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1264{ "List week view","Listenwochenansicht" }, 1264{ "List week view","Listenwochenansicht" },
1265{ "List week","Listenwochenansicht" }, 1265{ "List week","Listenwochenansicht" },
1266{ "Next Week","N�chste Woche" }, 1266{ "Next Week","N�chste Woche" },
1267{ "Previous Week","Vorherige Woche" }, 1267{ "Previous Week","Vorherige Woche" },
1268{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Eintr�ge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo ben�tigt." }, 1268{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Eintr�ge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo ben�tigt." },
1269{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, 1269{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1270{ "Details","Details" }, 1270{ "Details","Details" },
1271{ "Created time","Erstellt Zeit" }, 1271{ "Created time","Erstellt Zeit" },
1272{ "Last modified time","Ge�ndert Zeit" }, 1272{ "Last modified time","Ge�ndert Zeit" },
1273{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnell�bersicht:" }, 1273{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnell�bersicht:" },
1274{ "View Options","Anzeige Optionen" }, 1274{ "View Options","Anzeige Optionen" },
1275{ "<b>Created: ","<b>Erstellt am: " }, 1275{ "<b>Created: ","<b>Erstellt am: " },
1276{ "<b>Last modified: ","<b>Zuletzt ge�ndert am: " }, 1276{ "<b>Last modified: ","<b>Zuletzt ge�ndert am: " },
1277{ "Journal: ","Journal: " }, 1277{ "Journal: ","Journal: " },
1278{ "yearly","j�hrlich" }, 1278{ "yearly","j�hrlich" },
1279{ "(%1) ","%1-" }, 1279{ "(%1) ","%1-" },
1280{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, 1280{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1281{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, 1281{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1282{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, 1282{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1283{ "Summary/Loc.","Titel/Ort" }, 1283{ "Summary/Loc.","Titel/Ort" },
1284{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo ben�tigt." }, 1284{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo ben�tigt." },
1285{ "Week Number","Wochennummer" }, 1285{ "Week Number","Wochennummer" },
1286{ "Import","Importiere" }, 1286{ "Import","Importiere" },
1287{ "Export","Exportiere" }, 1287{ "Export","Exportiere" },
1288{ "Beam","Beame" }, 1288{ "Beam","Beame" },
1289{ "Export selected","Exportiere Selektierte" }, 1289{ "Export selected","Exportiere Selektierte" },
1290{ "As iCal (ics) file...","Als iCal (ics) Datei..." }, 1290{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1291{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, 1291{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1292{ "Journal/Details...","Journale/Details..." }, 1292{ "Journal/Details...","Journale/Details..." },
1293{ "Agenda View","Agenda Ansicht" }, 1293{ "Agenda View","Agenda Ansicht" },
1294{ "Show current time","Zeige aktuelle Zeit" }, 1294{ "Show current time","Zeige aktuelle Zeit" },
1295{ "Edit new item","Bearbeite neuen Eintrag" }, 1295{ "Edit new item","Bearbeite neuen Eintrag" },
1296{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte w�hlen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" }, 1296{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte w�hlen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1297{ "There is no next alarm.","Es gibt keinen n�chsten Alarm." }, 1297{ "There is no next alarm.","Es gibt keinen n�chsten Alarm." },
1298{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (n�chster Termin/Todo mit Alarm)" }, 1298{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (n�chster Termin/Todo mit Alarm)" },
1299{ "The next alarm is in:\n","Der n�chste Alarm ist in:\n" }, 1299{ "The next alarm is in:\n","Der n�chste Alarm ist in:\n" },
1300{ "%1 days\n","%1 Tagen\n" }, 1300{ "%1 days\n","%1 Tagen\n" },
1301{ "1 day\n","1 Tag\n" }, 1301{ "1 day\n","1 Tag\n" },
1302{ "%1 hours\n","%1 Stunden\n" }, 1302{ "%1 hours\n","%1 Stunden\n" },
1303{ "1 hour\n","1 Stunde\n" }, 1303{ "1 hour\n","1 Stunde\n" },
1304{ "%1 minutes\n","%1 Minuten\n" }, 1304{ "%1 minutes\n","%1 Minuten\n" },
1305{ "1 minute\n","1 Minute\n" }, 1305{ "1 minute\n","1 Minute\n" },
1306{ "Only one toolbar","Nur eine Toolbar" }, 1306{ "Only one toolbar","Nur eine Toolbar" },
1307{ "Print","Drucke" }, 1307{ "Print","Drucke" },
1308{ "Print selected event / todo...","Drucke ausgew�hlten Termin / Todo..." }, 1308{ "Print selected event / todo...","Drucke ausgew�hlten Termin / Todo..." },
1309{ "There is nothing selected!","Es ist nichts ausgew�hlt!" }, 1309{ "There is nothing selected!","Es ist nichts ausgew�hlt!" },
1310{ "\n\nDo you really want to print this item?","\n\nM�chten Sie wirklich diesen Eintrag ausdrucken? " }, 1310{ "\n\nDo you really want to print this item?","\n\nM�chten Sie wirklich diesen Eintrag ausdrucken? " },
1311{ "KO/Pi Print Confirmation","KO/Pi Druckbest�tigung" }, 1311{ "KO/Pi Print Confirmation","KO/Pi Druckbest�tigung" },
1312{ "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt nat�rlich.)\nMan kann das Layout �ndern durch �ndern der Fenstergr��e.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabh�ngig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergr��ert den Text gegebenenfalls.\nDas Seitenlayout kann im n�chsten Dialog gew�hlt werden.\n" }, 1312{ "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt nat�rlich.)\nMan kann das Layout �ndern durch �ndern der Fenstergr��e.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabh�ngig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergr��ert den Text gegebenenfalls.\nDas Seitenlayout kann im n�chsten Dialog gew�hlt werden.\n" },
1313{ "KO/Pi Printout","KO/Pi Ausdruck" }, 1313{ "KO/Pi Printout","KO/Pi Ausdruck" },
1314{ "Print unscaled","Drucke unskaliert" }, 1314{ "Print unscaled","Drucke unskaliert" },
1315{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, 1315{ "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." },
1316{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, 1316{ "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." },
1317{ "Printout Mode","Druck Modus" }, 1317{ "Printout Mode","Druck Modus" },
1318{ "Filter menu icon","Filtermenu Icon" }, 1318{ "Filter menu icon","Filtermenu Icon" },
1319{ "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum n�chsten Alarm</p>\n" }, 1319{ "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum n�chsten Alarm</p>\n" },
1320{ "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur n�chsten Ansicht, die ein Icon in der Toolbar hat</p>\n" }, 1320{ "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur n�chsten Ansicht, die ein Icon in der Toolbar hat</p>\n" },
1321{ "%1d","%1t" }, 1321{ "%1d","%1t" },
1322{ "%1h","%1std" }, 1322{ "%1h","%1std" },
1323{ "%1min","%1min" }, 1323{ "%1min","%1min" },
1324{ "( %1 before )","( %1 vorher )" }, 1324{ "( %1 before )","( %1 vorher )" },
1325{ "The next alarm is in\nless than one minute!","Der n�chste Alarm kommt in\nweniger als einer Minute!" }, 1325{ "The next alarm is in\nless than one minute!","Der n�chste Alarm kommt in\nweniger als einer Minute!" },
1326{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1326{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1327{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1327{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1328{ "Show Sync Events","Zeige Sync-Ereignisse" }, 1328{ "Show Sync Events","Zeige Sync-Ereignisse" },
1329{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1329{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1330{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1330{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1331{ " on "," am " }, 1331{ " on "," am " },
1332{ "On: ","Am: " }, 1332{ "On: ","Am: " },
1333{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1333{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1334{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1334{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1335{ "Color for running todos:","Farbe f�r laufende Todos:" }, 1335{ "Color for running todos:","Farbe f�r laufende Todos:" },
1336{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, 1336{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" },
1337{ "Todo is started","Todo ist gestartet" }, 1337{ "Todo is started","Todo ist gestartet" },
1338{ "Stop todo","Stoppe Todo" }, 1338{ "Stop todo","Stoppe Todo" },
1339{ "Todo is stopped","Todo ist gestoppt" }, 1339{ "Todo is stopped","Todo ist gestoppt" },
1340{ "Start todo","Starte Todo" }, 1340{ "Start todo","Starte Todo" },
1341{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, 1341{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" },
1342{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nM�chten Sie alle\nUntertodos auch klonen?" }, 1342{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nM�chten Sie alle\nUntertodos auch klonen?" },
1343{ "Todo has subtodos","Todo hat Untertodos" }, 1343{ "Todo has subtodos","Todo hat Untertodos" },
1344{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1344{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1345{ "Colors","Farben" }, 1345{ "Colors","Farben" },
1346{ "Click on new parent item","Klicke auf neues �bertodo" }, 1346{ "Click on new parent item","Klicke auf neues �bertodo" },
1347{ "Reparenting aborted!","�bertodo setzen abgebrochen" }, 1347{ "Reparenting aborted!","�bertodo setzen abgebrochen" },
1348{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1348{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1349{ "Recursive reparenting not possible!","Rekursives Verschieben nicht m�glich" }, 1349{ "Recursive reparenting not possible!","Rekursives Verschieben nicht m�glich" },
1350{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gel�scht!)" }, 1350{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gel�scht!)" },
1351{ "Alternating background of list views","Abwechselnder Hintergrund f�r Listen" }, 1351{ "Alternating background of list views","Abwechselnder Hintergrund f�r Listen" },
1352{ "times","Zeiten" }, 1352{ "times","Zeiten" },
1353{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nM�chten Sie die Kategorien\nauch f�r alle Untertodos setzen?" }, 1353{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nM�chten Sie die Kategorien\nauch f�r alle Untertodos setzen?" },
1354{ "Backup enabled","Backup angeschaltet" }, 1354{ "Backup enabled","Backup angeschaltet" },
1355{ "Use standard backup dir","Standard Backupverzeichnis" }, 1355{ "Use standard backup dir","Standard Backupverzeichnis" },
1356{ "Number of Backups:","Anzahl der Backups" }, 1356{ "Number of Backups:","Anzahl der Backups" },
1357{ "Make backup every ","Mache ein Backup alle " }, 1357{ "Make backup every ","Mache ein Backup alle " },
1358{ " days"," Tage" }, 1358{ " days"," Tage" },
1359{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." }, 1359{ "Creating backup ... please wait ...","Erstelle Backup ... bitte warten ..." },
1360{ "Backup Failed!","Backup Problem!" }, 1360{ "Backup Failed!","Backup Problem!" },
1361{ "Try again now","Versuche jetzt nochmal" }, 1361{ "Try again now","Versuche jetzt nochmal" },
1362{ "Try again later","Versuche sp�ter nochmal" }, 1362{ "Try again later","Versuche sp�ter nochmal" },
1363{ "Try again tomorrow","Versuche morgen nochmal" }, 1363{ "Try again tomorrow","Versuche morgen nochmal" },
1364{ "Disable backup","Schalte Backup ab" }, 1364{ "Disable backup","Schalte Backup ab" },
1365{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 1365{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
1366{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 1366{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
1367{ "Choose action","W�hle Aktion" }, 1367{ "Choose action","W�hle Aktion" },
1368{ "Comment for todo:","Kommentar zum Todo:" }, 1368{ "Comment for todo:","Kommentar zum Todo:" },
1369{ "Stop+note","Stop+Notiz" }, 1369{ "Stop+note","Stop+Notiz" },
1370{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, 1370{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" },
1371{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, 1371{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" },
1372{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme f�r folgende Termine oder Todos:" }, 1372{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme f�r folgende Termine oder Todos:" },
1373{ "Print complete list","Drucke komplette Liste" }, 1373{ "Print complete list","Drucke komplette Liste" },
1374{ "Hide all selected","Verstecke Selektierte" }, 1374{ "Hide all selected","Verstecke Selektierte" },
1375{ "Add items","hinzuf�gen" }, 1375{ "Add items","hinzuf�gen" },
1376{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgew�hltes\nTodo hat Untertodos!\nM�chten Sie der Auswahlliste\nalle Untertodos von allen\nausgew�hlten Todos hinzuf�gen?" }, 1376{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgew�hltes\nTodo hat Untertodos!\nM�chten Sie der Auswahlliste\nalle Untertodos von allen\nausgew�hlten Todos hinzuf�gen?" },
1377{ "Print List View...","Drucke Listenansicht..." }, 1377{ "Print List View...","Drucke Listenansicht..." },
1378{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie k�nnen die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. W�hlen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie k�nnen Listeneintr�ge entfernen ohne die korrespondierenden Ereignisse/Todos zu l�schen! Selektieren sie einfach alle Eintr�ge, die sie nicht ausdrucken m�chten. Dann Rechtsklicken Sie auf einen Eintrag und w�hlen <b>Verstecke Selektierte</b>. Danach k�nnen Sie die Liste ohne diese Eintr�ge ausdrucken." }, 1378{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie k�nnen die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. W�hlen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie k�nnen Listeneintr�ge entfernen ohne die korrespondierenden Ereignisse/Todos zu l�schen! Selektieren sie einfach alle Eintr�ge, die sie nicht ausdrucken m�chten. Dann Rechtsklicken Sie auf einen Eintrag und w�hlen <b>Verstecke Selektierte</b>. Danach k�nnen Sie die Liste ohne diese Eintr�ge ausdrucken." },
1379{ "Configure KO/Pi...","Konfiguriere KO/Pi..." }, 1379{ "Configure KO/Pi...","Konfiguriere KO/Pi..." },
1380{ "Global Settings...","Globale Einstellungen..." }, 1380{ "Global Settings...","Globale Einstellungen..." },
1381{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" }, 1381{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" },
1382{ "(disabled)","(abgeschaltet)" }, 1382{ "(disabled)","(abgeschaltet)" },
1383{ "New Calendar","Neuer Kalender" }, 1383{ "New Calendar","Neuer Kalender" },
1384{ "Calendar","Kalender" }, 1384{ "Calendar","Kalender" },
1385{ "Filter selector","Filterauswahl" }, 1385{ "Filter selector","Filterauswahl" },
1386{ "Filtermenu","Filtermenu" }, 1386{ "Filtermenu","Filtermenu" },
1387{ "Toggle Fullscreen","Vollbild umschalten" }, 1387{ "Toggle Fullscreen","Vollbild umschalten" },
1388{ "Toggle Resource View","Resourcenansicht umschalten" }, 1388{ "Toggle Resource View","Resourcenansicht umschalten" },
1389{ "Storage HowTo...","Speicherort HowTo..." }, 1389{ "Storage HowTo...","Speicherort HowTo..." },
1390{ "Timetracking HowTo...","Timetracking HowTo..." }, 1390{ "Timetracking HowTo...","Timetracking HowTo..." },
1391{ "Juni","Juni" }, 1391{ "Juni","Juni" },
1392{ "Juli","Juli" }, 1392{ "Juli","Juli" },
1393{ "ToDo:","ToDo:" }, 1393{ "ToDo:","ToDo:" },
1394{ "Set Calendar","Setze Kalender" }, 1394{ "Set Calendar","Setze Kalender" },
1395{ "Todo: %1","Todo: %1" }, 1395{ "Todo: %1","Todo: %1" },
1396{ ": (Prio ",": (Prio " }, 1396{ ": (Prio ",": (Prio " },
1397{ "Todos","Todos" }, 1397{ "Todos","Todos" },
1398{ "Todo Viewer","Todo Viewer" }, 1398{ "Todo Viewer","Todo Viewer" },
1399{ "Todo ","Todo " }, 1399{ "Todo ","Todo " },
1400{ " Calendar \n Resource "," Kalender \n Resource " }, 1400{ " Calendar \n Resource "," Kalender \n Resource " },
1401{ " Color "," Farbe " }, 1401{ " Color "," Farbe " },
1402{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. M�chten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gel�scht!)" }, 1402{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. M�chten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gel�scht!)" },
1403{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, 1403{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" },
1404{ "Add new Calendar","F�ge Kalender hinzu" }, 1404{ "Add new Calendar","F�ge Kalender hinzu" },
1405{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, 1405{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" },
1406{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" }, 1406{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" },
1407{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, 1407{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" },
1408{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, 1408{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" },
1409{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, 1409{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." },
1410{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" }, 1410{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" },
1411{ "Global application font for all apps:","Globale Schriftart:" }, 1411{ "Global application font for all apps:","Globale Schriftart:" },
1412{ "Application Font","Applikationsschriftart" }, 1412{ "Application Font","Applikationsschriftart" },
1413{ "Kx/Pi","Kx/Pi" }, 1413{ "Kx/Pi","Kx/Pi" },
1414{ "Backup","Backup" }, 1414{ "Backup","Backup" },
1415{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, 1415{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" },
1416{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte w�hlen Sie einen anderen!" }, 1416{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte w�hlen Sie einen anderen!" },
1417{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte w�hlen Sie eine andere!" }, 1417{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte w�hlen Sie eine andere!" },
1418{ "Choose Color","W�hle Farbe" }, 1418{ "Choose Color","W�hle Farbe" },
1419{ " OK "," OK " }, 1419{ " OK "," OK " },
1420{ " Cancel "," Abbrechen " }, 1420{ " Cancel "," Abbrechen " },
1421{ "Matching items will be added to list","Passende werden zur Liste hinzugef�gt" }, 1421{ "Matching items will be added to list","Passende werden zur Liste hinzugef�gt" },
1422{ "Matching items will be removed from list","Passende werden von der Liste entfernt" }, 1422{ "Matching items will be removed from list","Passende werden von der Liste entfernt" },
1423{ "Search on displayed list only","Suche auf der dargestellten Liste" }, 1423{ "Search on displayed list only","Suche auf der dargestellten Liste" },
1424{ "List will be cleared before search","Liste wird vor der Suche gel�scht" }, 1424{ "List will be cleared before search","Liste wird vor der Suche gel�scht" },
1425{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. M�chten Sie den Zustand auf "laufend" setzen?</center>" }, 1425{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. M�chten Sie den Zustand auf "laufend" setzen?</center>" },
1426{ "%1\nis running!","%1\nist am Laufen!" }, 1426{ "%1\nis running!","%1\nist am Laufen!" },
1427{ "Additional Comment:","Zus�tzlicher Kommentar:" }, 1427{ "Additional Comment:","Zus�tzlicher Kommentar:" },
1428{ "Stop and save","Stopp und Speichern" }, 1428{ "Stop and save","Stopp und Speichern" },
1429{ "Continue running","Weiter laufen lassen" }, 1429{ "Continue running","Weiter laufen lassen" },
1430{ "Stop - do not save","Stopp - nicht Speichern" }, 1430{ "Stop - do not save","Stopp - nicht Speichern" },
1431{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","M�chten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" }, 1431{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","M�chten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" },
1432{ "Time mismatch!","Zeiten stimmen nicht!" }, 1432{ "Time mismatch!","Zeiten stimmen nicht!" },
1433{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, 1433{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" },
1434{ "Yes, stop todo","Ja, stoppe Todo" }, 1434{ "Yes, stop todo","Ja, stoppe Todo" },
1435{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, 1435{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" },
1436{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, 1436{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" },
1437{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte w�hlen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Eintr�ge werden dem Default-Kalender hinzugef�gt." }, 1437{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte w�hlen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Eintr�ge werden dem Default-Kalender hinzugef�gt." },
1438{ "Spouse","Ehegatte" }, 1438{ "Spouse","Ehegatte" },
1439{ "Notes","Notizen" }, 1439{ "Notes","Notizen" },
1440{ "Messanger","Messanger" }, 1440{ "Messanger","Messanger" },
1441{ "Assistant","Assistent" }, 1441{ "Assistant","Assistent" },
1442{ "Manager","Manager" }, 1442{ "Manager","Manager" },
1443{ "Secrecy","Sichtbar" }, 1443{ "Secrecy","Sichtbar" },
1444{ "male","m�nnlich" }, 1444{ "male","m�nnlich" },
1445{ "female","weiblich" }, 1445{ "female","weiblich" },
1446{ "Hide!","Verbergen!" }, 1446{ "Hide!","Verbergen!" },
1447{ "Show!","Anzeigen!" }, 1447{ "Show!","Anzeigen!" },
1448{ "Details","Details" }, 1448{ "Details","Details" },
1449{ "Profession","Beruf" }, 1449{ "Profession","Beruf" },
1450{ "Children","Kinder" }, 1450{ "Children","Kinder" },
1451{ "Department","Abteilung" }, 1451{ "Department","Abteilung" },
1452{ "Backup cancelled","Backup abgebrochen" }, 1452{ "Backup cancelled","Backup abgebrochen" },
1453{ "Backup globally disabled","Backup global abgeschaltet" }, 1453{ "Backup globally disabled","Backup global abgeschaltet" },
1454{ "Backup succesfully finished","Backup erfolgreich beendet" }, 1454{ "Backup succesfully finished","Backup erfolgreich beendet" },
1455{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie k�nnen ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, 1455{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie k�nnen ein automatisches Backup in den globalen Einstellungen konfigurieren!)" },
1456{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, 1456{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" },
1457{ "Birthdays","Geburtstage" }, 1457{ "Birthdays","Geburtstage" },
1458{ "KO/Pi import information!","KO/Pi Import Information!" }, 1458{ "KO/Pi import information!","KO/Pi Import Information!" },
1459{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, 1459{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" },
1460{ "Cancel - do not start"," Abbrechen - Todo nicht starten" }, 1460{ "Cancel - do not start"," Abbrechen - Todo nicht starten" },
1461{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde ge�ndert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu �ndern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, 1461{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde ge�ndert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu �ndern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" },
1462{ "Reload","Neu laden" }, 1462{ "Reload","Neu laden" },
1463{ "Timezone settings","Zeitzoneneinstellung" }, 1463{ "Timezone settings","Zeitzoneneinstellung" },
1464{ "Title: ","Titel: " }, 1464{ "Title: ","Titel: " },
1465{ "Journal from: ","Journal vom: " }, 1465{ "Journal from: ","Journal vom: " },
1466{ "Journal: %1 from ","Journal: %1 vom " }, 1466{ "Journal: %1 from ","Journal: %1 vom " },
1467{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu �ndern: </b>" }, 1467{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu �ndern: </b>" },
1468{ "Selected Item","Ausgew�hltes Item" }, 1468{ "Selected Item","Ausgew�hltes Item" },
1469{ "Select Date...","W�hle Datum..." }, 1469{ "Select Date...","W�hle Datum..." },
1470{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugef�gt werden. Bitte w�hlen Sie, was <b>jetzt</b> passieren soll:" }, 1470{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugef�gt werden. Bitte w�hlen Sie, was <b>jetzt</b> passieren soll:" },
1471{ "Change category list now!","�ndere Kategorieliste jetzt!" }, 1471{ "Change category list now!","�ndere Kategorieliste jetzt!" },
1472{ "Edit category list...","�ndere Kategorieliste..." }, 1472{ "Edit category list...","�ndere Kategorieliste..." },
1473{ "Toolbar changes needs a restart!","Neustart ben�tigt f�r Toolbar�nderungen!" }, 1473{ "Toolbar changes needs a restart!","Neustart ben�tigt f�r Toolbar�nderungen!" },
1474{ "Filepath: ","Dateipfad: " }, 1474{ "Filepath: ","Dateipfad: " },
1475{ "The loading of one or more calendar failed:","Das Laden eines oder mehrerer Kalender schlug fehl:" },
1476{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht k�nnen Sie erneut versuchen den Kalender zu laden!" }, 1475{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht k�nnen Sie erneut versuchen den Kalender zu laden!" },
1477{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, 1476{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" },
1478{ "Pending Suspend Alarm","Laufender Suspend Alarm" }, 1477{ "Pending Suspend Alarm","Laufender Suspend Alarm" },
1478{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" },
1479{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" },
1480{ "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" },
1481{ "","" },
1482{ "","" },
1483{ "","" },
1484{ "","" },
1485{ "","" },
1486{ "","" },
1487{ "","" },
1488{ "","" },
1489{ "","" },
1479{ "","" }, 1490{ "","" },
1480{ "","" }, 1491{ "","" },
1481{ "","" }, \ No newline at end of file 1492{ "","" }, \ No newline at end of file
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 70a1d2d..678143d 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,1468 +1,1473 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preton.brown@yale.edu) 8 Preston Brown (preton.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "datenavigatorcontainer.h" 110#include "datenavigatorcontainer.h"
111#include "statusdialog.h" 111#include "statusdialog.h"
112#include "kdatenavigator.h" 112#include "kdatenavigator.h"
113#include "kotodoview.h" 113#include "kotodoview.h"
114#include "datenavigator.h" 114#include "datenavigator.h"
115#include "resourceview.h" 115#include "resourceview.h"
116#include "navigatorbar.h" 116#include "navigatorbar.h"
117#include "searchdialog.h" 117#include "searchdialog.h"
118#include "mainwindow.h" 118#include "mainwindow.h"
119#include "categoryeditdialog.h" 119#include "categoryeditdialog.h"
120 120
121#include "calendarview.h" 121#include "calendarview.h"
122#ifndef DESKTOP_VERSION 122#ifndef DESKTOP_VERSION
123#include <qtopia/alarmserver.h> 123#include <qtopia/alarmserver.h>
124#endif 124#endif
125#ifndef _WIN32_ 125#ifndef _WIN32_
126#include <stdlib.h> 126#include <stdlib.h>
127#include <stdio.h> 127#include <stdio.h>
128#include <unistd.h> 128#include <unistd.h>
129#else 129#else
130#include <qprocess.h> 130#include <qprocess.h>
131#endif 131#endif
132 132
133#ifdef DESKTOP_VERSION 133#ifdef DESKTOP_VERSION
134#include <kabc/stdaddressbook.h> 134#include <kabc/stdaddressbook.h>
135#endif 135#endif
136using namespace KOrg; 136using namespace KOrg;
137using namespace KCal; 137using namespace KCal;
138extern int globalFlagBlockAgenda; 138extern int globalFlagBlockAgenda;
139extern int globalFlagBlockStartup; 139extern int globalFlagBlockStartup;
140 140
141 141
142MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) 142MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent)
143 143
144{ 144{
145 mAlarms = alarms; 145 mAlarms = alarms;
146 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) ); 146 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) );
147 QString mText = "<table width=\"100%\">\n"; 147 QString mText = "<table width=\"100%\">\n";
148 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 148 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
149#ifdef DESKTOP_VERSION 149#ifdef DESKTOP_VERSION
150 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 150 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
151#else 151#else
152 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>"; 152 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>";
153#endif 153#endif
154 // mText += "<img src=\""; 154 // mText += "<img src=\"";
155 // mText += ipath; 155 // mText += ipath;
156 // mText += "\">"; 156 // mText += "\">";
157 //mEventDate = QDate::currentDate(); 157 //mEventDate = QDate::currentDate();
158#ifdef DESKTOP_VERSION 158#ifdef DESKTOP_VERSION
159 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; 159 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>";
160#else 160#else
161 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>"; 161 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>";
162#endif 162#endif
163 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 163 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
164 164
165 Incidence * inc = getNextInc( start ); 165 Incidence * inc = getNextInc( start );
166 int time = 0; 166 int time = 0;
167 //mText += "<table>"; 167 //mText += "<table>";
168 while ( inc ) { 168 while ( inc ) {
169 QDateTime dt ; 169 QDateTime dt ;
170 QString tempText = "<a "; 170 QString tempText = "<a ";
171 bool ok; 171 bool ok;
172 dt = inc->getNextOccurence( start, &ok ); 172 dt = inc->getNextOccurence( start, &ok );
173 if ( !ok ) continue; 173 if ( !ok ) continue;
174 if ( inc->typeID() == eventID ) { 174 if ( inc->typeID() == eventID ) {
175 tempText += "href=\"event:"; 175 tempText += "href=\"event:";
176 } else if ( inc->typeID() == todoID ) { 176 } else if ( inc->typeID() == todoID ) {
177 tempText += "href=\"todo:"; 177 tempText += "href=\"todo:";
178 } 178 }
179 tempText += inc->uid() + "\">"; 179 tempText += inc->uid() + "\">";
180 if ( inc->typeID() == todoID ) 180 if ( inc->typeID() == todoID )
181 tempText += i18n("Todo: "); 181 tempText += i18n("Todo: ");
182 if ( inc->summary().length() > 0 ) 182 if ( inc->summary().length() > 0 )
183 tempText += inc->summary(); 183 tempText += inc->summary();
184 else 184 else
185 tempText += i18n("-no summary-"); 185 tempText += i18n("-no summary-");
186 QString timestr; 186 QString timestr;
187 if (!inc->doesFloat()) 187 if (!inc->doesFloat())
188 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; 188 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": ";
189 else 189 else
190 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 190 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
191 if ( dt.date() < QDate::currentDate() && time == 0 ) { 191 if ( dt.date() < QDate::currentDate() && time == 0 ) {
192 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 192 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
193 mText += "<table>"; 193 mText += "<table>";
194 time = 1; 194 time = 1;
195 } 195 }
196 if ( dt.date() == QDate::currentDate() && time <= 1 ) { 196 if ( dt.date() == QDate::currentDate() && time <= 1 ) {
197 if ( time > 0 ) 197 if ( time > 0 )
198 mText +="</table>"; 198 mText +="</table>";
199 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>"; 199 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>";
200 mText += "<table>"; 200 mText += "<table>";
201 time = 2; 201 time = 2;
202 202
203 } 203 }
204 if ( dt.date() > QDate::currentDate() && time <= 2 ) { 204 if ( dt.date() > QDate::currentDate() && time <= 2 ) {
205 if ( time > 0 ) 205 if ( time > 0 )
206 mText +="</table>"; 206 mText +="</table>";
207 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>"; 207 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>";
208 mText += "<table>"; 208 mText += "<table>";
209 time = 3; 209 time = 3;
210 } 210 }
211 mText +="<tr><td><b>"; 211 mText +="<tr><td><b>";
212 mText += timestr; 212 mText += timestr;
213 mText += "</b></td><td>"; 213 mText += "</b></td><td>";
214 mText += tempText; 214 mText += tempText;
215 mText += "</td></tr>\n"; 215 mText += "</td></tr>\n";
216 inc = getNextInc( start ); 216 inc = getNextInc( start );
217 } 217 }
218 mText +="</table>"; 218 mText +="</table>";
219 setText( mText ); 219 setText( mText );
220} 220}
221 221
222MissedAlarmTextBrowser::~MissedAlarmTextBrowser() 222MissedAlarmTextBrowser::~MissedAlarmTextBrowser()
223{ 223{
224 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() "); 224 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() ");
225} 225}
226Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start ) 226Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start )
227{ 227{
228 QDateTime dt ; 228 QDateTime dt ;
229 Incidence * retInc; 229 Incidence * retInc;
230 Incidence * inc = mAlarms.first(); 230 Incidence * inc = mAlarms.first();
231 if ( inc == 0 ) 231 if ( inc == 0 )
232 return 0; 232 return 0;
233 bool ok; 233 bool ok;
234 dt = inc->getNextOccurence( start, &ok ); 234 dt = inc->getNextOccurence( start, &ok );
235 if ( ! ok ) return 0; 235 if ( ! ok ) return 0;
236 QDateTime dtn ; 236 QDateTime dtn ;
237 retInc = inc; 237 retInc = inc;
238 inc = mAlarms.next(); 238 inc = mAlarms.next();
239 while ( inc ) { 239 while ( inc ) {
240 dtn = inc->getNextOccurence( start, &ok ); 240 dtn = inc->getNextOccurence( start, &ok );
241 if ( ! ok ) return 0; 241 if ( ! ok ) return 0;
242 if ( dtn < dt ) { 242 if ( dtn < dt ) {
243 dt = dtn; 243 dt = dtn;
244 retInc = inc; 244 retInc = inc;
245 } 245 }
246 inc = mAlarms.next(); 246 inc = mAlarms.next();
247 } 247 }
248 mAlarms.remove( retInc ); 248 mAlarms.remove( retInc );
249 return retInc; 249 return retInc;
250 250
251} 251}
252void MissedAlarmTextBrowser::setSource(const QString & n) 252void MissedAlarmTextBrowser::setSource(const QString & n)
253{ 253{
254 if (n.startsWith("event:")) { 254 if (n.startsWith("event:")) {
255#ifdef DESKTOP_VERSION 255#ifdef DESKTOP_VERSION
256 emit showIncidence(n.mid(8)); 256 emit showIncidence(n.mid(8));
257#else 257#else
258 emit showIncidence(n.mid(6)); 258 emit showIncidence(n.mid(6));
259#endif 259#endif
260 return; 260 return;
261 } else if (n.startsWith("todo:")) { 261 } else if (n.startsWith("todo:")) {
262#ifdef DESKTOP_VERSION 262#ifdef DESKTOP_VERSION
263 emit showIncidence(n.mid(7)); 263 emit showIncidence(n.mid(7));
264#else 264#else
265 emit showIncidence(n.mid(5)); 265 emit showIncidence(n.mid(5));
266#endif 266#endif
267 return; 267 return;
268 } 268 }
269} 269}
270 270
271 271
272class KOBeamPrefs : public QDialog 272class KOBeamPrefs : public QDialog
273{ 273{
274 public: 274 public:
275 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 275 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
276 QDialog( parent, name, true ) 276 QDialog( parent, name, true )
277 { 277 {
278 setCaption( i18n("Beam Options") ); 278 setCaption( i18n("Beam Options") );
279 QVBoxLayout* lay = new QVBoxLayout( this ); 279 QVBoxLayout* lay = new QVBoxLayout( this );
280 lay->setSpacing( 3 ); 280 lay->setSpacing( 3 );
281 lay->setMargin( 3 ); 281 lay->setMargin( 3 );
282 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 282 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
283 lay->addWidget( format ); 283 lay->addWidget( format );
284 format->setExclusive ( true ) ; 284 format->setExclusive ( true ) ;
285 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 285 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
286 lay->addWidget( time ); time->setExclusive ( true ) ; 286 lay->addWidget( time ); time->setExclusive ( true ) ;
287 vcal = new QRadioButton(" vCalendar ", format ); 287 vcal = new QRadioButton(" vCalendar ", format );
288 ical = new QRadioButton(" iCalendar ", format ); 288 ical = new QRadioButton(" iCalendar ", format );
289 vcal->setChecked( true ); 289 vcal->setChecked( true );
290 tz = new QRadioButton(i18n(" With timezone "), time ); 290 tz = new QRadioButton(i18n(" With timezone "), time );
291 local = new QRadioButton(i18n(" Local time "), time ); 291 local = new QRadioButton(i18n(" Local time "), time );
292 tz->setChecked( true ); 292 tz->setChecked( true );
293 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 293 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
294 lay->addWidget( ok ); 294 lay->addWidget( ok );
295 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 295 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
296 lay->addWidget( cancel ); 296 lay->addWidget( cancel );
297 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 297 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
298 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 298 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
299 resize( 200, 200 ); 299 resize( 200, 200 );
300 } 300 }
301 301
302 bool beamVcal() { return vcal->isChecked(); } 302 bool beamVcal() { return vcal->isChecked(); }
303 bool beamLocal() { return local->isChecked(); } 303 bool beamLocal() { return local->isChecked(); }
304private: 304private:
305 QRadioButton* vcal, *ical, *local, *tz; 305 QRadioButton* vcal, *ical, *local, *tz;
306}; 306};
307class KOCatPrefs : public QDialog 307class KOCatPrefs : public QDialog
308{ 308{
309 public: 309 public:
310 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 310 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
311 QDialog( parent, name, true ) 311 QDialog( parent, name, true )
312 { 312 {
313 setCaption( i18n("Manage new Categories") ); 313 setCaption( i18n("Manage new Categories") );
314 QVBoxLayout* lay = new QVBoxLayout( this ); 314 QVBoxLayout* lay = new QVBoxLayout( this );
315 lay->setSpacing( 3 ); 315 lay->setSpacing( 3 );
316 lay->setMargin( 3 ); 316 lay->setMargin( 3 );
317 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this ); 317 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this );
318 lay->addWidget( lab ); 318 lay->addWidget( lab );
319 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 319 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
320 lay->addWidget( format ); 320 lay->addWidget( format );
321 format->setExclusive ( true ) ; 321 format->setExclusive ( true ) ;
322 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 322 addCatBut = new QRadioButton(i18n("Add to category list"), format );
323 new QRadioButton(i18n("Remove from Events/Todos"), format ); 323 new QRadioButton(i18n("Remove from Events/Todos"), format );
324 addCatBut->setChecked( true ); 324 addCatBut->setChecked( true );
325 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this ); 325 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this );
326 lay->addWidget( ok ); 326 lay->addWidget( ok );
327 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 327 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
328 lay->addWidget( cancel ); 328 lay->addWidget( cancel );
329 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 329 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
330 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 330 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
331 resize( 200, 200 ); 331 resize( 200, 200 );
332 } 332 }
333 333
334 bool addCat() { return addCatBut->isChecked(); } 334 bool addCat() { return addCatBut->isChecked(); }
335private: 335private:
336 QRadioButton* addCatBut; 336 QRadioButton* addCatBut;
337}; 337};
338 338
339 339
340 340
341CalendarView::CalendarView( CalendarResources *calendar, 341CalendarView::CalendarView( CalendarResources *calendar,
342 QWidget *parent, const char *name ) 342 QWidget *parent, const char *name )
343 : CalendarViewBase( parent, name ), 343 : CalendarViewBase( parent, name ),
344 mCalendar( calendar ), 344 mCalendar( calendar ),
345 mResourceManager( calendar->resourceManager() ) 345 mResourceManager( calendar->resourceManager() )
346{ 346{
347 347
348 mEventEditor = 0; 348 mEventEditor = 0;
349 mTodoEditor = 0; 349 mTodoEditor = 0;
350 350
351 init(); 351 init();
352} 352}
353 353
354CalendarView::CalendarView( Calendar *calendar, 354CalendarView::CalendarView( Calendar *calendar,
355 QWidget *parent, const char *name ) 355 QWidget *parent, const char *name )
356 : CalendarViewBase( parent, name ), 356 : CalendarViewBase( parent, name ),
357 mCalendar( calendar ), 357 mCalendar( calendar ),
358 mResourceManager( 0 ) 358 mResourceManager( 0 )
359{ 359{
360 360
361 mEventEditor = 0; 361 mEventEditor = 0;
362 mTodoEditor = 0; 362 mTodoEditor = 0;
363 init(); 363 init();
364} 364}
365 365
366void CalendarView::init() 366void CalendarView::init()
367{ 367{
368 mNextAlarmDateTime = QDateTime::currentDateTime(); 368 mNextAlarmDateTime = QDateTime::currentDateTime();
369 setFocusPolicy ( NoFocus ); 369 setFocusPolicy ( NoFocus );
370 mViewerCallerIsSearchDialog = false; 370 mViewerCallerIsSearchDialog = false;
371 mBlockShowDates = false; 371 mBlockShowDates = false;
372 372
373 mDatePickerMode = 0; 373 mDatePickerMode = 0;
374 mCurrentSyncDevice = ""; 374 mCurrentSyncDevice = "";
375 mViewManager = new KOViewManager( this ); 375 mViewManager = new KOViewManager( this );
376 mDialogManager = new KODialogManager( this ); 376 mDialogManager = new KODialogManager( this );
377 mEventViewerDialog = 0; 377 mEventViewerDialog = 0;
378 mModified = false; 378 mModified = false;
379 mReadOnly = false; 379 mReadOnly = false;
380 mSelectedIncidence = 0; 380 mSelectedIncidence = 0;
381 mCalPrinter = 0; 381 mCalPrinter = 0;
382 mFilters.setAutoDelete(true); 382 mFilters.setAutoDelete(true);
383 383
384 mCalendar->registerObserver( this ); 384 mCalendar->registerObserver( this );
385 // TODO: Make sure that view is updated, when calendar is changed. 385 // TODO: Make sure that view is updated, when calendar is changed.
386 386
387 mStorage = new FileStorage( mCalendar ); 387 mStorage = new FileStorage( mCalendar );
388 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 388 mNavigator = new DateNavigator( this, "datevav", mViewManager );
389 389
390 QBoxLayout *topLayout = (QBoxLayout*)layout(); 390 QBoxLayout *topLayout = (QBoxLayout*)layout();
391#ifndef KORG_NOSPLITTER 391#ifndef KORG_NOSPLITTER
392 // create the main layout frames. 392 // create the main layout frames.
393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
394 topLayout->addWidget(mPanner); 394 topLayout->addWidget(mPanner);
395 395
396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
397 "CalendarView::LeftFrame"); 397 "CalendarView::LeftFrame");
398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
399 399
400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
401 "CalendarView::DateNavigator" ); 401 "CalendarView::DateNavigator" );
402 402
403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
405 mTodoList->setNavigator( mNavigator ); 405 mTodoList->setNavigator( mNavigator );
406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
407 407
408#ifdef KORG_NORESOURCEVIEW 408#ifdef KORG_NORESOURCEVIEW
409 mResourceView = 0; 409 mResourceView = 0;
410#else 410#else
411 if ( mResourceManager ) { 411 if ( mResourceManager ) {
412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
413 mResourceView->updateView(); 413 mResourceView->updateView();
414 connect( mResourceView, SIGNAL( resourcesChanged() ), 414 connect( mResourceView, SIGNAL( resourcesChanged() ),
415 SLOT( updateView() ) ); 415 SLOT( updateView() ) );
416 } else { 416 } else {
417 mResourceView = 0; 417 mResourceView = 0;
418 } 418 }
419#endif 419#endif
420 QWidget *rightBox = new QWidget( mPanner ); 420 QWidget *rightBox = new QWidget( mPanner );
421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
422 422
423 mRightFrame = new QWidgetStack( rightBox ); 423 mRightFrame = new QWidgetStack( rightBox );
424 rightLayout->addWidget( mRightFrame, 1 ); 424 rightLayout->addWidget( mRightFrame, 1 );
425 425
426 mLeftFrame = mLeftSplitter; 426 mLeftFrame = mLeftSplitter;
427#else 427#else
428 //QWidget *mainBox = new QWidget( this ); 428 //QWidget *mainBox = new QWidget( this );
429 //QWidget *leftFrame = new QWidget( mainBox ); 429 //QWidget *leftFrame = new QWidget( mainBox );
430 //QBoxLayout * mainBoxLayout; 430 //QBoxLayout * mainBoxLayout;
431 if ( KOPrefs::instance()->mVerticalScreen ) { 431 if ( KOPrefs::instance()->mVerticalScreen ) {
432 //mainBoxLayout = new QVBoxLayout(mainBox); 432 //mainBoxLayout = new QVBoxLayout(mainBox);
433 //leftFrameLayout = new QHBoxLayout(leftFrame ); 433 //leftFrameLayout = new QHBoxLayout(leftFrame );
434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
438 } else { 438 } else {
439 //mainBoxLayout = new QHBoxLayout(mainBox); 439 //mainBoxLayout = new QHBoxLayout(mainBox);
440 //leftFrameLayout = new QVBoxLayout(leftFrame ); 440 //leftFrameLayout = new QVBoxLayout(leftFrame );
441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
445 } 445 }
446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
447 //QBoxLayout * leftFrameLayout; 447 //QBoxLayout * leftFrameLayout;
448 topLayout->addWidget( mMainFrame ); 448 topLayout->addWidget( mMainFrame );
449#ifdef DESKTOP_VERSION 449#ifdef DESKTOP_VERSION
450 mDateScrollBar = new QScrollBar ( 0, 364, 1,30, 200,QScrollBar::Horizontal, this ); 450 mDateScrollBar = new QScrollBar ( 0, 364, 1,30, 200,QScrollBar::Horizontal, this );
451 topLayout->addWidget( mDateScrollBar ); 451 topLayout->addWidget( mDateScrollBar );
452 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) ); 452 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) );
453 if ( QApplication::desktop()->width() < 800 ) 453 if ( QApplication::desktop()->width() < 800 )
454 mDateScrollBar->hide(); 454 mDateScrollBar->hide();
455#endif 455#endif
456 //mainBoxLayout->addWidget (mLeftFrame); 456 //mainBoxLayout->addWidget (mLeftFrame);
457 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 457 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
458 "CalendarView::DateNavigator" ); 458 "CalendarView::DateNavigator" );
459#if 0 459#if 0
460 // FIXME 460 // FIXME
461 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 461 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
462 "CalendarView::DateNavigator", QDate::currentDate()); 462 "CalendarView::DateNavigator", QDate::currentDate());
463#endif 463#endif
464 // mDateNavigator->blockSignals( true ); 464 // mDateNavigator->blockSignals( true );
465 //leftFrameLayout->addWidget( mDateNavigator ); 465 //leftFrameLayout->addWidget( mDateNavigator );
466 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 466 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
467 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 467 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
468 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 468 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
469 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 469 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
470 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 470 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
471 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),mCalendar, SLOT( setReadOnly(int,bool)) ); 471 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),mCalendar, SLOT( setReadOnly(int,bool)) );
472 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 472 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
474 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 474 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
475 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 475 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
476 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 476 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
477 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
477 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 478 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
478 479
479 mTodoList->setNavigator( mNavigator ); 480 mTodoList->setNavigator( mNavigator );
480#if 0 481#if 0
481 if ( QApplication::desktop()->width() < 480 ) { 482 if ( QApplication::desktop()->width() < 480 ) {
482 leftFrameLayout->addWidget(mFilterView); 483 leftFrameLayout->addWidget(mFilterView);
483 leftFrameLayout->addWidget(mTodoList, 2 ); 484 leftFrameLayout->addWidget(mTodoList, 2 );
484 485
485 } else { 486 } else {
486 leftFrameLayout->addWidget(mTodoList,2 ); 487 leftFrameLayout->addWidget(mTodoList,2 );
487 leftFrameLayout->addWidget(mFilterView ); 488 leftFrameLayout->addWidget(mFilterView );
488 } 489 }
489#endif 490#endif
490 mFilterView->hide(); 491 mFilterView->hide();
491 mCalEditView->hide(); 492 mCalEditView->hide();
492 QWidget *rightBox = new QWidget( mMainFrame ); 493 QWidget *rightBox = new QWidget( mMainFrame );
493 //mainBoxLayout->addWidget ( rightBox, 10 ); 494 //mainBoxLayout->addWidget ( rightBox, 10 );
494 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 495 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
495 mRightFrame = new QWidgetStack( rightBox ); 496 mRightFrame = new QWidgetStack( rightBox );
496 rightLayout->addWidget( mRightFrame, 10 ); 497 rightLayout->addWidget( mRightFrame, 10 );
497 498
498 //mLeftFrame = (QWidget *)leftFrame; 499 //mLeftFrame = (QWidget *)leftFrame;
499 if ( KOPrefs::instance()->mVerticalScreen ) { 500 if ( KOPrefs::instance()->mVerticalScreen ) {
500 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 501 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
501 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 502 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
502 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 503 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
503 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 504 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
504 } else { 505 } else {
505 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 506 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
506 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 507 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
507 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 508 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
508 } 509 }
509 if ( !KOPrefs::instance()->mShowDateNavigator) 510 if ( !KOPrefs::instance()->mShowDateNavigator)
510 mDateNavigator->hide(); 511 mDateNavigator->hide();
511 //qDebug("Calendarview Size %d %d ", width(), height()); 512 //qDebug("Calendarview Size %d %d ", width(), height());
512#endif 513#endif
513 514
514 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 515 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
515 SLOT( showDates( const KCal::DateList & ) ) ); 516 SLOT( showDates( const KCal::DateList & ) ) );
516 517
517 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 518 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
518 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 519 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
519 520
520 521
521 522
522 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 523 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
523 mViewManager, SLOT( showMonth( const QDate & ) ) ); 524 mViewManager, SLOT( showMonth( const QDate & ) ) );
524 525
525 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 526 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
526 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 527 mNavigator, SLOT( selectWeek( const QDate & ) ) );
527 528
528 connect( mDateNavigator, SIGNAL( goPrevYear() ), 529 connect( mDateNavigator, SIGNAL( goPrevYear() ),
529 mNavigator, SLOT( selectPreviousYear() ) ); 530 mNavigator, SLOT( selectPreviousYear() ) );
530 connect( mDateNavigator, SIGNAL( goNextYear() ), 531 connect( mDateNavigator, SIGNAL( goNextYear() ),
531 mNavigator, SLOT( selectNextYear() ) ); 532 mNavigator, SLOT( selectNextYear() ) );
532 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 533 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
533 mNavigator, SLOT( selectPreviousMonth() ) ); 534 mNavigator, SLOT( selectPreviousMonth() ) );
534 connect( mDateNavigator, SIGNAL( goNextMonth() ), 535 connect( mDateNavigator, SIGNAL( goNextMonth() ),
535 mNavigator, SLOT( selectNextMonth() ) ); 536 mNavigator, SLOT( selectNextMonth() ) );
536 537
537 connect( mDateNavigator, SIGNAL( goPrevious() ), 538 connect( mDateNavigator, SIGNAL( goPrevious() ),
538 mNavigator, SLOT( selectPrevious() ) ); 539 mNavigator, SLOT( selectPrevious() ) );
539 connect( mDateNavigator, SIGNAL( goNext() ), 540 connect( mDateNavigator, SIGNAL( goNext() ),
540 mNavigator, SLOT( selectNext() ) ); 541 mNavigator, SLOT( selectNext() ) );
541 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 542 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
542 mNavigator, SLOT( slotMonthSelect( int ) ) ); 543 mNavigator, SLOT( slotMonthSelect( int ) ) );
543 544
544 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 545 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
545 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 546 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
546#if 0 547#if 0
547 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 548 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
548 SLOT( incidenceAdded( Incidence *) ) ); 549 SLOT( incidenceAdded( Incidence *) ) );
549#endif 550#endif
550 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 551 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
551 552
552 connect( this, SIGNAL( configChanged() ), 553 connect( this, SIGNAL( configChanged() ),
553 mDateNavigator, SLOT( updateConfig() ) ); 554 mDateNavigator, SLOT( updateConfig() ) );
554 555
555 connect( mTodoList, SIGNAL( newTodoSignal() ), 556 connect( mTodoList, SIGNAL( newTodoSignal() ),
556 SLOT( newTodo() ) ); 557 SLOT( newTodo() ) );
557 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 558 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
558 SLOT( newSubTodo( Todo * ) ) ); 559 SLOT( newSubTodo( Todo * ) ) );
559 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 560 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
560 SLOT( editTodo( Todo * ) ) ); 561 SLOT( editTodo( Todo * ) ) );
561 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 562 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
562 SLOT( showTodo( Todo *) ) ); 563 SLOT( showTodo( Todo *) ) );
563 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 564 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
564 SLOT( deleteTodo( Todo *) ) ); 565 SLOT( deleteTodo( Todo *) ) );
565 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 566 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
566 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 567 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
567 SLOT( purgeCompleted() ) ); 568 SLOT( purgeCompleted() ) );
568 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 569 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
569 SIGNAL( todoModified( Todo *, int ) ) ); 570 SIGNAL( todoModified( Todo *, int ) ) );
570 571
571 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 572 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
572 this, SLOT ( cloneIncidence( Incidence * ) ) ); 573 this, SLOT ( cloneIncidence( Incidence * ) ) );
573 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 574 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
574 this, SLOT (cancelIncidence( Incidence * ) ) ); 575 this, SLOT (cancelIncidence( Incidence * ) ) );
575 576
576 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 577 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
577 this, SLOT ( moveIncidence( Incidence * ) ) ); 578 this, SLOT ( moveIncidence( Incidence * ) ) );
578 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 579 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
579 this, SLOT ( beamIncidence( Incidence * ) ) ); 580 this, SLOT ( beamIncidence( Incidence * ) ) );
580 581
581 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 582 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
582 this, SLOT ( todo_unsub( Todo * ) ) ); 583 this, SLOT ( todo_unsub( Todo * ) ) );
583 584
584 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 585 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
585 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 586 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
586 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 587 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
587 SLOT( updateTodo( Todo *, int ) ) ); 588 SLOT( updateTodo( Todo *, int ) ) );
588 connect( this, SIGNAL( todoModified( Todo *, int )), this, 589 connect( this, SIGNAL( todoModified( Todo *, int )), this,
589 SLOT( changeTodoDisplay( Todo *, int ) ) ); 590 SLOT( changeTodoDisplay( Todo *, int ) ) );
590 591
591 592
592 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 593 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
593 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 594 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
594 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 595 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
595 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 596 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
596 597
597 598
598 599
599 600
600 601
601 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 602 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
602 SLOT(checkClipboard())); 603 SLOT(checkClipboard()));
603 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 604 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
604 SLOT( processTodoListSelection( Incidence * ) ) ); 605 SLOT( processTodoListSelection( Incidence * ) ) );
605 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 606 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
606 607
607 // kdDebug() << "CalendarView::CalendarView() done" << endl; 608 // kdDebug() << "CalendarView::CalendarView() done" << endl;
608 609
609 mDateFrame = new QVBox(0,0,WType_Popup); 610 mDateFrame = new QVBox(0,0,WType_Popup);
610 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 611 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
611 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 612 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
612 mDateFrame->setLineWidth(3); 613 mDateFrame->setLineWidth(3);
613 mDateFrame->hide(); 614 mDateFrame->hide();
614 mDateFrame->setCaption( i18n( "Pick a date to display")); 615 mDateFrame->setCaption( i18n( "Pick a date to display"));
615 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 616 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
616 617
617 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 618 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
618 619
619 mEventEditor = mDialogManager->getEventEditor(); 620 mEventEditor = mDialogManager->getEventEditor();
620 mTodoEditor = mDialogManager->getTodoEditor(); 621 mTodoEditor = mDialogManager->getTodoEditor();
621 622
622 mFlagEditDescription = false; 623 mFlagEditDescription = false;
623 624
624 mSuspendTimer = new QTimer( this ); 625 mSuspendTimer = new QTimer( this );
625 mAlarmTimer = new QTimer( this ); 626 mAlarmTimer = new QTimer( this );
626 mRecheckAlarmTimer = new QTimer( this ); 627 mRecheckAlarmTimer = new QTimer( this );
627 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 628 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
628 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 629 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
629 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 630 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
630 mAlarmDialog = new AlarmDialog( this ); 631 mAlarmDialog = new AlarmDialog( this );
631 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 632 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
632 mAlarmDialog->setServerNotification( false ); 633 mAlarmDialog->setServerNotification( false );
633 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 634 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
634 635
635 636
636#ifndef DESKTOP_VERSION 637#ifndef DESKTOP_VERSION
637//US listen for arriving address resultsets 638//US listen for arriving address resultsets
638 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 639 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
639 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 640 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
640#endif 641#endif
641 mDateNavigator->setCalendar( mCalendar ); 642 mDateNavigator->setCalendar( mCalendar );
642} 643}
643 644
644 645
645CalendarView::~CalendarView() 646CalendarView::~CalendarView()
646{ 647{
647 // kdDebug() << "~CalendarView()" << endl; 648 // kdDebug() << "~CalendarView()" << endl;
648 //qDebug("CalendarView::~CalendarView() "); 649 //qDebug("CalendarView::~CalendarView() ");
649 delete mDialogManager; 650 delete mDialogManager;
650 delete mViewManager; 651 delete mViewManager;
651 delete mStorage; 652 delete mStorage;
652 delete mDateFrame ; 653 delete mDateFrame ;
653 delete mEventViewerDialog; 654 delete mEventViewerDialog;
654 //kdDebug() << "~CalendarView() done" << endl; 655 //kdDebug() << "~CalendarView() done" << endl;
655} 656}
656void CalendarView::setScrollBarStep(int val ) 657void CalendarView::setScrollBarStep(int val )
657{ 658{
658#ifdef DESKTOP_VERSION 659#ifdef DESKTOP_VERSION
659 mDateScrollBar->setLineStep ( val ); 660 mDateScrollBar->setLineStep ( val );
660#endif 661#endif
661} 662}
662void CalendarView::scrollBarValue(int val ) 663void CalendarView::scrollBarValue(int val )
663{ 664{
664#ifdef DESKTOP_VERSION 665#ifdef DESKTOP_VERSION
665 if ( QApplication::desktop()->width() < 800 ) return; 666 if ( QApplication::desktop()->width() < 800 ) return;
666 static bool block = false; 667 static bool block = false;
667 if ( block ) return; 668 if ( block ) return;
668 block = true; 669 block = true;
669 val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 670 val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
670 //qDebug("VAL %d ",val ); 671 //qDebug("VAL %d ",val );
671 int count = mNavigator->selectedDates().count(); 672 int count = mNavigator->selectedDates().count();
672 int year = mNavigator->selectedDates().first().year(); 673 int year = mNavigator->selectedDates().first().year();
673 int day = mNavigator->selectedDates().first().dayOfYear(); 674 int day = mNavigator->selectedDates().first().dayOfYear();
674 if ( val == day -1 ) { 675 if ( val == day -1 ) {
675 block = false; 676 block = false;
676 return; 677 return;
677 } 678 }
678 QDate d ( year,1,1 ); 679 QDate d ( year,1,1 );
679 mNavigator->selectDates( d.addDays( val ), count ); 680 mNavigator->selectDates( d.addDays( val ), count );
680 block = false; 681 block = false;
681#endif 682#endif
682 683
683} 684}
684 685void CalendarView::checkFiles()
685void CalendarView::checkAlarms()
686{ 686{
687
688 QString message; 687 QString message;
689 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 688 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
690 KopiCalendarFile * cal = calendars.first(); 689 KopiCalendarFile * cal = calendars.first();
691 while ( cal ) { 690 while ( cal ) {
692 if ( cal->mErrorOnLoad ) { 691 if ( cal->mErrorOnLoad ) {
693 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 692 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
694 } 693 }
695 cal = calendars.next(); 694 cal = calendars.next();
696 } 695 }
697 if ( !message.isEmpty() ) { 696 if ( !message.isEmpty() ) {
698 message = KGlobal::formatMessage( i18n("The loading of one or more calendar failed:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 697 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
699 KMessageBox::error(this,message); 698 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed"));
700 } 699 }
700 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
701}
702void CalendarView::checkAlarms()
703{
704
705
701 KConfig *config = KOGlobals::config(); 706 KConfig *config = KOGlobals::config();
702 config->setGroup( "AppRun" ); 707 config->setGroup( "AppRun" );
703 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 708 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
704 int daysto = dt.daysTo( QDate::currentDate() ); 709 int daysto = dt.daysTo( QDate::currentDate() );
705 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 710 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
706 dt = dt.addDays( days ); 711 dt = dt.addDays( days );
707 int secto = dt.secsTo( QDateTime::currentDateTime() ); 712 int secto = dt.secsTo( QDateTime::currentDateTime() );
708 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 713 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
709 //qDebug("KO: Reading program stop %d ", secs); 714 //qDebug("KO: Reading program stop %d ", secs);
710 //secs -= ( 3600 * 24*3 ); // debug only 715 //secs -= ( 3600 * 24*3 ); // debug only
711 QDateTime latest = dt.addSecs ( secs ); 716 QDateTime latest = dt.addSecs ( secs );
712 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 717 qDebug("KO: Last termination on %s ", latest.toString().latin1());
713 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 718 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
714 QPtrList<Incidence> el = mCalendar->rawIncidences(); 719 QPtrList<Incidence> el = mCalendar->rawIncidences();
715 QPtrList<Incidence> al; 720 QPtrList<Incidence> al;
716 Incidence* inL = el.first(); 721 Incidence* inL = el.first();
717 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 722 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
718 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 723 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
719 while ( inL ) { 724 while ( inL ) {
720 bool ok = false; 725 bool ok = false;
721 int offset = 0; 726 int offset = 0;
722 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 727 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
723 if ( ok ) { 728 if ( ok ) {
724 //qDebug("OK %s",next.toString().latin1()); 729 //qDebug("OK %s",next.toString().latin1());
725 if ( next < cur ) { 730 if ( next < cur ) {
726 al.append( inL ); 731 al.append( inL );
727 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 732 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
728 } 733 }
729 } 734 }
730 inL = el.next(); 735 inL = el.next();
731 } 736 }
732 if ( al.count() ) { 737 if ( al.count() ) {
733 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 738 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
734 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 739 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
735 QVBoxLayout* lay = new QVBoxLayout( dia ); 740 QVBoxLayout* lay = new QVBoxLayout( dia );
736 lay->setSpacing( 0 ); 741 lay->setSpacing( 0 );
737 lay->setMargin( 0 ); 742 lay->setMargin( 0 );
738 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 743 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
739 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 744 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
740 lay->addWidget( matb ); 745 lay->addWidget( matb );
741 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 746 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
742 int wid = 210; 747 int wid = 210;
743 int x = QApplication::desktop()->width() - wid - 7; 748 int x = QApplication::desktop()->width() - wid - 7;
744 int y = QApplication::desktop()->height() - wid - 70; 749 int y = QApplication::desktop()->height() - wid - 70;
745 dia->setGeometry ( x,y,wid,wid); 750 dia->setGeometry ( x,y,wid,wid);
746 } else { 751 } else {
747 int si = 220; 752 int si = 220;
748 if ( QApplication::desktop()->width() > 470 ) 753 if ( QApplication::desktop()->width() > 470 )
749 si = 400; 754 si = 400;
750 dia->resize(si,si/2); 755 dia->resize(si,si/2);
751 } 756 }
752 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 757 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
753 dia->show(); 758 dia->show();
754 759
755 } 760 }
756} 761}
757void CalendarView::showDay( QDate d ) 762void CalendarView::showDay( QDate d )
758{ 763{
759 dateNavigator()->blockSignals( true ); 764 dateNavigator()->blockSignals( true );
760 dateNavigator()->selectDate( d ); 765 dateNavigator()->selectDate( d );
761 dateNavigator()->blockSignals( false ); 766 dateNavigator()->blockSignals( false );
762 mViewManager->showDayView(); 767 mViewManager->showDayView();
763 //dateNavigator()->selectDate( d ); 768 //dateNavigator()->selectDate( d );
764} 769}
765void CalendarView::timerAlarm() 770void CalendarView::timerAlarm()
766{ 771{
767 //qDebug("CalendarView::timerAlarm() "); 772 //qDebug("CalendarView::timerAlarm() ");
768 computeAlarm(mAlarmNotification ); 773 computeAlarm(mAlarmNotification );
769} 774}
770 775
771void CalendarView::suspendAlarm() 776void CalendarView::suspendAlarm()
772{ 777{
773 //qDebug(" CalendarView::suspendAlarm() "); 778 //qDebug(" CalendarView::suspendAlarm() ");
774 computeAlarm(mSuspendAlarmNotification ); 779 computeAlarm(mSuspendAlarmNotification );
775 780
776} 781}
777 782
778void CalendarView::startAlarm( QString mess , QString filename) 783void CalendarView::startAlarm( QString mess , QString filename)
779{ 784{
780 785
781 topLevelWidget()->showNormal(); 786 topLevelWidget()->showNormal();
782 topLevelWidget()->setActiveWindow(); 787 topLevelWidget()->setActiveWindow();
783 topLevelWidget()->raise(); 788 topLevelWidget()->raise();
784 789
785 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 790 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
786 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 791 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
787 792
788} 793}
789 794
790void CalendarView::checkNextTimerAlarm() 795void CalendarView::checkNextTimerAlarm()
791{ 796{
792 mCalendar->checkAlarmForIncidence( 0, true ); 797 mCalendar->checkAlarmForIncidence( 0, true );
793} 798}
794 799
795void CalendarView::computeAlarm( QString msg ) 800void CalendarView::computeAlarm( QString msg )
796{ 801{
797 802
798 QString mess = msg; 803 QString mess = msg;
799 QString mAlarmMessage = mess.mid( 9 ); 804 QString mAlarmMessage = mess.mid( 9 );
800 QString filename = MainWindow::resourcePath(); 805 QString filename = MainWindow::resourcePath();
801 filename += "koalarm.wav"; 806 filename += "koalarm.wav";
802 QString tempfilename; 807 QString tempfilename;
803 if ( mess.left( 13 ) == "suspend_alarm") { 808 if ( mess.left( 13 ) == "suspend_alarm") {
804 bool error = false; 809 bool error = false;
805 int len = mess.mid( 13 ).find("+++"); 810 int len = mess.mid( 13 ).find("+++");
806 if ( len < 2 ) 811 if ( len < 2 )
807 error = true; 812 error = true;
808 else { 813 else {
809 tempfilename = mess.mid( 13, len ); 814 tempfilename = mess.mid( 13, len );
810 if ( !QFile::exists( tempfilename ) ) 815 if ( !QFile::exists( tempfilename ) )
811 error = true; 816 error = true;
812 } 817 }
813 if ( ! error ) { 818 if ( ! error ) {
814 filename = tempfilename; 819 filename = tempfilename;
815 } 820 }
816 mAlarmMessage = mess.mid( 13+len+3 ); 821 mAlarmMessage = mess.mid( 13+len+3 );
817 //qDebug("suspend file %s ",tempfilename.latin1() ); 822 //qDebug("suspend file %s ",tempfilename.latin1() );
818 startAlarm( mAlarmMessage, filename); 823 startAlarm( mAlarmMessage, filename);
819 return; 824 return;
820 } 825 }
821 if ( mess.left( 11 ) == "timer_alarm") { 826 if ( mess.left( 11 ) == "timer_alarm") {
822 //mTimerTime = 0; 827 //mTimerTime = 0;
823 startAlarm( mess.mid( 11 ), filename ); 828 startAlarm( mess.mid( 11 ), filename );
824 return; 829 return;
825 } 830 }
826 if ( mess.left( 10 ) == "proc_alarm") { 831 if ( mess.left( 10 ) == "proc_alarm") {
827 bool error = false; 832 bool error = false;
828 int len = mess.mid( 10 ).find("+++"); 833 int len = mess.mid( 10 ).find("+++");
829 if ( len < 2 ) 834 if ( len < 2 )
830 error = true; 835 error = true;
831 else { 836 else {
832 tempfilename = mess.mid( 10, len ); 837 tempfilename = mess.mid( 10, len );
833 if ( !QFile::exists( tempfilename ) ) 838 if ( !QFile::exists( tempfilename ) )
834 error = true; 839 error = true;
835 } 840 }
836 if ( error ) { 841 if ( error ) {
837 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 842 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
838 mAlarmMessage += mess.mid( 10+len+3+9 ); 843 mAlarmMessage += mess.mid( 10+len+3+9 );
839 } else { 844 } else {
840 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 845 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
841 //qDebug("-----system command %s ",tempfilename.latin1() ); 846 //qDebug("-----system command %s ",tempfilename.latin1() );
842#ifndef _WIN32_ 847#ifndef _WIN32_
843 if ( vfork () == 0 ) { 848 if ( vfork () == 0 ) {
844 execl ( tempfilename.latin1(), 0 ); 849 execl ( tempfilename.latin1(), 0 );
845 return; 850 return;
846 } 851 }
847#else 852#else
848 QProcess* p = new QProcess(); 853 QProcess* p = new QProcess();
849 p->addArgument( tempfilename.latin1() ); 854 p->addArgument( tempfilename.latin1() );
850 p->start(); 855 p->start();
851 return; 856 return;
852#endif 857#endif
853 858
854 return; 859 return;
855 } 860 }
856 861
857 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 862 //qDebug("+++++++system command %s ",tempfilename.latin1() );
858 } 863 }
859 if ( mess.left( 11 ) == "audio_alarm") { 864 if ( mess.left( 11 ) == "audio_alarm") {
860 bool error = false; 865 bool error = false;
861 int len = mess.mid( 11 ).find("+++"); 866 int len = mess.mid( 11 ).find("+++");
862 if ( len < 2 ) 867 if ( len < 2 )
863 error = true; 868 error = true;
864 else { 869 else {
865 tempfilename = mess.mid( 11, len ); 870 tempfilename = mess.mid( 11, len );
866 if ( !QFile::exists( tempfilename ) ) 871 if ( !QFile::exists( tempfilename ) )
867 error = true; 872 error = true;
868 } 873 }
869 if ( ! error ) { 874 if ( ! error ) {
870 filename = tempfilename; 875 filename = tempfilename;
871 } 876 }
872 mAlarmMessage = mess.mid( 11+len+3+9 ); 877 mAlarmMessage = mess.mid( 11+len+3+9 );
873 //qDebug("audio file command %s ",tempfilename.latin1() ); 878 //qDebug("audio file command %s ",tempfilename.latin1() );
874 } 879 }
875 if ( mess.left( 9 ) == "cal_alarm") { 880 if ( mess.left( 9 ) == "cal_alarm") {
876 mAlarmMessage = mess.mid( 9 ) ; 881 mAlarmMessage = mess.mid( 9 ) ;
877 } 882 }
878 883
879 startAlarm( mAlarmMessage, filename ); 884 startAlarm( mAlarmMessage, filename );
880 885
881 886
882} 887}
883 888
884void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 889void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
885{ 890{
886 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 891 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
887 892
888 mSuspendAlarmNotification = noti; 893 mSuspendAlarmNotification = noti;
889 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 894 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
890 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 895 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
891 mSuspendTimer->start( ms , true ); 896 mSuspendTimer->start( ms , true );
892 897
893} 898}
894 899
895void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 900void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
896{ 901{
897 mNextAlarmDateTime = qdt; 902 mNextAlarmDateTime = qdt;
898 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 903 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
899 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 904 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
900#ifndef DESKTOP_VERSION 905#ifndef DESKTOP_VERSION
901 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() ); 906 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() );
902#endif 907#endif
903 return; 908 return;
904 } 909 }
905 int maxSec; 910 int maxSec;
906 //maxSec = 5; //testing only 911 //maxSec = 5; //testing only
907 maxSec = 86400+3600; // one day+1hour 912 maxSec = 86400+3600; // one day+1hour
908 mAlarmNotification = noti; 913 mAlarmNotification = noti;
909 int sec = QDateTime::currentDateTime().secsTo( qdt ); 914 int sec = QDateTime::currentDateTime().secsTo( qdt );
910 if ( sec > maxSec ) { 915 if ( sec > maxSec ) {
911 mRecheckAlarmTimer->start( maxSec * 1000 ); 916 mRecheckAlarmTimer->start( maxSec * 1000 );
912 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 917 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
913 return; 918 return;
914 } else { 919 } else {
915 mRecheckAlarmTimer->stop(); 920 mRecheckAlarmTimer->stop();
916 } 921 }
917 //qDebug("Alarm timer started with secs: %d ", sec); 922 //qDebug("Alarm timer started with secs: %d ", sec);
918 mAlarmTimer->start( sec *1000 , true ); 923 mAlarmTimer->start( sec *1000 , true );
919 924
920} 925}
921// called by mRecheckAlarmTimer to get next alarm 926// called by mRecheckAlarmTimer to get next alarm
922// we need this, because a QTimer has only a max range of 25 days 927// we need this, because a QTimer has only a max range of 25 days
923void CalendarView::recheckTimerAlarm() 928void CalendarView::recheckTimerAlarm()
924{ 929{
925 mAlarmTimer->stop(); 930 mAlarmTimer->stop();
926 mRecheckAlarmTimer->stop(); 931 mRecheckAlarmTimer->stop();
927 mCalendar->checkAlarmForIncidence( 0, true ); 932 mCalendar->checkAlarmForIncidence( 0, true );
928} 933}
929#ifndef DESKTOP_VERSION 934#ifndef DESKTOP_VERSION
930void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 935void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
931#else 936#else
932void CalendarView::removeAlarm(const QDateTime &, const QString & ) 937void CalendarView::removeAlarm(const QDateTime &, const QString & )
933#endif 938#endif
934{ 939{
935 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 940 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
936 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 941 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
937#ifndef DESKTOP_VERSION 942#ifndef DESKTOP_VERSION
938 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() ); 943 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() );
939#endif 944#endif
940 return; 945 return;
941 } 946 }
942 mAlarmTimer->stop(); 947 mAlarmTimer->stop();
943} 948}
944void CalendarView::selectWeekNum ( int num ) 949void CalendarView::selectWeekNum ( int num )
945{ 950{
946 dateNavigator()->blockSignals( true ); 951 dateNavigator()->blockSignals( true );
947 dateNavigator()->selectWeek( num ); 952 dateNavigator()->selectWeek( num );
948 dateNavigator()->blockSignals( false ); 953 dateNavigator()->blockSignals( false );
949 mViewManager->showWeekView(); 954 mViewManager->showWeekView();
950} 955}
951KOViewManager *CalendarView::viewManager() 956KOViewManager *CalendarView::viewManager()
952{ 957{
953 return mViewManager; 958 return mViewManager;
954} 959}
955 960
956KODialogManager *CalendarView::dialogManager() 961KODialogManager *CalendarView::dialogManager()
957{ 962{
958 return mDialogManager; 963 return mDialogManager;
959} 964}
960 965
961QDate CalendarView::startDate() 966QDate CalendarView::startDate()
962{ 967{
963 DateList dates = mNavigator->selectedDates(); 968 DateList dates = mNavigator->selectedDates();
964 969
965 return dates.first(); 970 return dates.first();
966} 971}
967 972
968QDate CalendarView::endDate() 973QDate CalendarView::endDate()
969{ 974{
970 DateList dates = mNavigator->selectedDates(); 975 DateList dates = mNavigator->selectedDates();
971 976
972 return dates.last(); 977 return dates.last();
973} 978}
974 979
975 980
976void CalendarView::createPrinter() 981void CalendarView::createPrinter()
977{ 982{
978#ifndef KORG_NOPRINTER 983#ifndef KORG_NOPRINTER
979 if (!mCalPrinter) { 984 if (!mCalPrinter) {
980 mCalPrinter = new CalPrinter(this, mCalendar); 985 mCalPrinter = new CalPrinter(this, mCalendar);
981 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 986 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
982 } 987 }
983#endif 988#endif
984} 989}
985 990
986 991
987//KOPrefs::instance()->mWriteBackFile 992//KOPrefs::instance()->mWriteBackFile
988//KOPrefs::instance()->mWriteBackExistingOnly 993//KOPrefs::instance()->mWriteBackExistingOnly
989 994
990// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 995// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
991// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 996// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
992// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 997// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
993// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 998// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
994// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 999// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
995// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 1000// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
996 1001
997int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 1002int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
998{ 1003{
999 1004
1000 // 0 equal 1005 // 0 equal
1001 // 1 take local 1006 // 1 take local
1002 // 2 take remote 1007 // 2 take remote
1003 // 3 cancel 1008 // 3 cancel
1004 QDateTime lastSync = mLastCalendarSync; 1009 QDateTime lastSync = mLastCalendarSync;
1005 QDateTime localMod = local->lastModified(); 1010 QDateTime localMod = local->lastModified();
1006 QDateTime remoteMod = remote->lastModified(); 1011 QDateTime remoteMod = remote->lastModified();
1007 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1012 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1008 bool remCh, locCh; 1013 bool remCh, locCh;
1009 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 1014 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
1010 //if ( remCh ) 1015 //if ( remCh )
1011 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 1016 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
1012 locCh = ( localMod > mLastCalendarSync ); 1017 locCh = ( localMod > mLastCalendarSync );
1013 if ( !remCh && ! locCh ) { 1018 if ( !remCh && ! locCh ) {
1014 //qDebug("both not changed "); 1019 //qDebug("both not changed ");
1015 lastSync = localMod.addDays(1); 1020 lastSync = localMod.addDays(1);
1016 if ( mode <= SYNC_PREF_ASK ) 1021 if ( mode <= SYNC_PREF_ASK )
1017 return 0; 1022 return 0;
1018 } else { 1023 } else {
1019 if ( locCh ) { 1024 if ( locCh ) {
1020 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1025 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1021 lastSync = localMod.addDays( -1 ); 1026 lastSync = localMod.addDays( -1 );
1022 if ( !remCh ) 1027 if ( !remCh )
1023 remoteMod = ( lastSync.addDays( -1 ) ); 1028 remoteMod = ( lastSync.addDays( -1 ) );
1024 } else { 1029 } else {
1025 //qDebug(" not loc changed "); 1030 //qDebug(" not loc changed ");
1026 lastSync = localMod.addDays( 1 ); 1031 lastSync = localMod.addDays( 1 );
1027 if ( remCh ) 1032 if ( remCh )
1028 remoteMod =( lastSync.addDays( 1 ) ); 1033 remoteMod =( lastSync.addDays( 1 ) );
1029 1034
1030 } 1035 }
1031 } 1036 }
1032 full = true; 1037 full = true;
1033 if ( mode < SYNC_PREF_ASK ) 1038 if ( mode < SYNC_PREF_ASK )
1034 mode = SYNC_PREF_ASK; 1039 mode = SYNC_PREF_ASK;
1035 } else { 1040 } else {
1036 if ( localMod == remoteMod ) 1041 if ( localMod == remoteMod )
1037 // if ( local->revision() == remote->revision() ) 1042 // if ( local->revision() == remote->revision() )
1038 return 0; 1043 return 0;
1039 1044
1040 } 1045 }
1041 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1046 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1042 1047
1043 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1048 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1044 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1049 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1045 //full = true; //debug only 1050 //full = true; //debug only
1046 if ( full ) { 1051 if ( full ) {
1047 bool equ = false; 1052 bool equ = false;
1048 if ( local->typeID() == eventID ) { 1053 if ( local->typeID() == eventID ) {
1049 equ = (*((Event*) local) == *((Event*) remote)); 1054 equ = (*((Event*) local) == *((Event*) remote));
1050 } 1055 }
1051 else if ( local->typeID() == todoID ) 1056 else if ( local->typeID() == todoID )
1052 equ = (*((Todo*) local) == (*(Todo*) remote)); 1057 equ = (*((Todo*) local) == (*(Todo*) remote));
1053 else if ( local->typeID() == journalID ) 1058 else if ( local->typeID() == journalID )
1054 equ = (*((Journal*) local) == *((Journal*) remote)); 1059 equ = (*((Journal*) local) == *((Journal*) remote));
1055 if ( equ ) { 1060 if ( equ ) {
1056 //qDebug("equal "); 1061 //qDebug("equal ");
1057 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1062 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1058 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1063 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1059 } 1064 }
1060 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1065 if ( mode < SYNC_PREF_FORCE_LOCAL )
1061 return 0; 1066 return 0;
1062 1067
1063 }//else //debug only 1068 }//else //debug only
1064 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1069 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1065 } 1070 }
1066 int result; 1071 int result;
1067 bool localIsNew; 1072 bool localIsNew;
1068 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 1073 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
1069 1074
1070 1075
1071 // ************************************************ 1076 // ************************************************
1072 // ************************************************ 1077 // ************************************************
1073 // ************************************************ 1078 // ************************************************
1074 // We may have that lastSync > remoteMod AND lastSync > localMod 1079 // We may have that lastSync > remoteMod AND lastSync > localMod
1075 // BUT remoteMod != localMod 1080 // BUT remoteMod != localMod
1076 1081
1077 1082
1078 if ( full && mode < SYNC_PREF_NEWEST ) 1083 if ( full && mode < SYNC_PREF_NEWEST )
1079 mode = SYNC_PREF_ASK; 1084 mode = SYNC_PREF_ASK;
1080 1085
1081 switch( mode ) { 1086 switch( mode ) {
1082 case SYNC_PREF_LOCAL: 1087 case SYNC_PREF_LOCAL:
1083 if ( lastSync > remoteMod ) 1088 if ( lastSync > remoteMod )
1084 return 1; 1089 return 1;
1085 if ( lastSync > localMod ) 1090 if ( lastSync > localMod )
1086 return 2; 1091 return 2;
1087 return 1; 1092 return 1;
1088 break; 1093 break;
1089 case SYNC_PREF_REMOTE: 1094 case SYNC_PREF_REMOTE:
1090 if ( lastSync > localMod ) 1095 if ( lastSync > localMod )
1091 return 2; 1096 return 2;
1092 if ( lastSync > remoteMod ) 1097 if ( lastSync > remoteMod )
1093 return 1; 1098 return 1;
1094 return 2; 1099 return 2;
1095 break; 1100 break;
1096 case SYNC_PREF_NEWEST: 1101 case SYNC_PREF_NEWEST:
1097 if ( localMod >= remoteMod ) 1102 if ( localMod >= remoteMod )
1098 return 1; 1103 return 1;
1099 else 1104 else
1100 return 2; 1105 return 2;
1101 break; 1106 break;
1102 case SYNC_PREF_ASK: 1107 case SYNC_PREF_ASK:
1103 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1108 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1104 if ( lastSync > remoteMod && lastSync > localMod) 1109 if ( lastSync > remoteMod && lastSync > localMod)
1105 return 0; 1110 return 0;
1106 if ( lastSync > remoteMod ) 1111 if ( lastSync > remoteMod )
1107 return 1; 1112 return 1;
1108 if ( lastSync > localMod ) 1113 if ( lastSync > localMod )
1109 return 2; 1114 return 2;
1110 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1115 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1111 localIsNew = localMod >= remoteMod; 1116 localIsNew = localMod >= remoteMod;
1112 if ( localIsNew ) 1117 if ( localIsNew )
1113 getEventViewerDialog()->setColorMode( 1 ); 1118 getEventViewerDialog()->setColorMode( 1 );
1114 else 1119 else
1115 getEventViewerDialog()->setColorMode( 2 ); 1120 getEventViewerDialog()->setColorMode( 2 );
1116 getEventViewerDialog()->setIncidence(local); 1121 getEventViewerDialog()->setIncidence(local);
1117 if ( localIsNew ) 1122 if ( localIsNew )
1118 getEventViewerDialog()->setColorMode( 2 ); 1123 getEventViewerDialog()->setColorMode( 2 );
1119 else 1124 else
1120 getEventViewerDialog()->setColorMode( 1 ); 1125 getEventViewerDialog()->setColorMode( 1 );
1121 getEventViewerDialog()->addIncidence(remote); 1126 getEventViewerDialog()->addIncidence(remote);
1122 getEventViewerDialog()->setColorMode( 0 ); 1127 getEventViewerDialog()->setColorMode( 0 );
1123 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1128 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1124 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1129 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1125 getEventViewerDialog()->showMe(); 1130 getEventViewerDialog()->showMe();
1126 result = getEventViewerDialog()->executeS( localIsNew ); 1131 result = getEventViewerDialog()->executeS( localIsNew );
1127 return result; 1132 return result;
1128 1133
1129 break; 1134 break;
1130 case SYNC_PREF_FORCE_LOCAL: 1135 case SYNC_PREF_FORCE_LOCAL:
1131 return 1; 1136 return 1;
1132 break; 1137 break;
1133 case SYNC_PREF_FORCE_REMOTE: 1138 case SYNC_PREF_FORCE_REMOTE:
1134 return 2; 1139 return 2;
1135 break; 1140 break;
1136 1141
1137 default: 1142 default:
1138 // SYNC_PREF_TAKE_BOTH not implemented 1143 // SYNC_PREF_TAKE_BOTH not implemented
1139 break; 1144 break;
1140 } 1145 }
1141 return 0; 1146 return 0;
1142} 1147}
1143Event* CalendarView::getLastSyncEvent() 1148Event* CalendarView::getLastSyncEvent()
1144{ 1149{
1145 Event* lse; 1150 Event* lse;
1146 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1151 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1147 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1152 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1148 if (!lse) { 1153 if (!lse) {
1149 lse = new Event(); 1154 lse = new Event();
1150 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1155 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1151 QString sum = ""; 1156 QString sum = "";
1152 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1157 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1153 sum = "E: "; 1158 sum = "E: ";
1154 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1159 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1155 lse->setDtStart( mLastCalendarSync ); 1160 lse->setDtStart( mLastCalendarSync );
1156 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1161 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1157 lse->setCategories( i18n("SyncEvent") ); 1162 lse->setCategories( i18n("SyncEvent") );
1158 lse->setReadOnly( true ); 1163 lse->setReadOnly( true );
1159 mCalendar->addEvent( lse ); 1164 mCalendar->addEvent( lse );
1160 } 1165 }
1161 1166
1162 return lse; 1167 return lse;
1163 1168
1164} 1169}
1165 1170
1166// we check, if the to delete event has a id for a profile 1171// we check, if the to delete event has a id for a profile
1167// if yes, we set this id in the profile to delete 1172// if yes, we set this id in the profile to delete
1168void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1173void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1169{ 1174{
1170 if ( lastSync.count() == 0 ) { 1175 if ( lastSync.count() == 0 ) {
1171 //qDebug(" lastSync.count() == 0"); 1176 //qDebug(" lastSync.count() == 0");
1172 return; 1177 return;
1173 } 1178 }
1174 if ( toDelete->typeID() == journalID ) 1179 if ( toDelete->typeID() == journalID )
1175 return; 1180 return;
1176 1181
1177 Event* eve = lastSync.first(); 1182 Event* eve = lastSync.first();
1178 1183
1179 while ( eve ) { 1184 while ( eve ) {
1180 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1185 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1181 if ( !id.isEmpty() ) { 1186 if ( !id.isEmpty() ) {
1182 QString des = eve->description(); 1187 QString des = eve->description();
1183 QString pref = "e"; 1188 QString pref = "e";
1184 if ( toDelete->typeID() == todoID ) 1189 if ( toDelete->typeID() == todoID )
1185 pref = "t"; 1190 pref = "t";
1186 des += pref+ id + ","; 1191 des += pref+ id + ",";
1187 eve->setReadOnly( false ); 1192 eve->setReadOnly( false );
1188 eve->setDescription( des ); 1193 eve->setDescription( des );
1189 //qDebug("setdes %s ", des.latin1()); 1194 //qDebug("setdes %s ", des.latin1());
1190 eve->setReadOnly( true ); 1195 eve->setReadOnly( true );
1191 } 1196 }
1192 eve = lastSync.next(); 1197 eve = lastSync.next();
1193 } 1198 }
1194 1199
1195} 1200}
1196void CalendarView::checkExternalId( Incidence * inc ) 1201void CalendarView::checkExternalId( Incidence * inc )
1197{ 1202{
1198 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1203 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1199 checkExternSyncEvent( lastSync, inc ); 1204 checkExternSyncEvent( lastSync, inc );
1200 1205
1201} 1206}
1202bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1207bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1203{ 1208{
1204 bool syncOK = true; 1209 bool syncOK = true;
1205 int addedEvent = 0; 1210 int addedEvent = 0;
1206 int addedEventR = 0; 1211 int addedEventR = 0;
1207 int deletedEventR = 0; 1212 int deletedEventR = 0;
1208 int deletedEventL = 0; 1213 int deletedEventL = 0;
1209 int changedLocal = 0; 1214 int changedLocal = 0;
1210 int changedRemote = 0; 1215 int changedRemote = 0;
1211 int filteredIN = 0; 1216 int filteredIN = 0;
1212 int filteredOUT = 0; 1217 int filteredOUT = 0;
1213 //QPtrList<Event> el = local->rawEvents(); 1218 //QPtrList<Event> el = local->rawEvents();
1214 Event* eventR; 1219 Event* eventR;
1215 QString uid; 1220 QString uid;
1216 int take; 1221 int take;
1217 Event* eventRSync; 1222 Event* eventRSync;
1218 Event* eventLSync; 1223 Event* eventLSync;
1219 clearAllViews(); 1224 clearAllViews();
1220 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1225 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1221 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1226 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1222 bool fullDateRange = false; 1227 bool fullDateRange = false;
1223 local->resetTempSyncStat(); 1228 local->resetTempSyncStat();
1224 mLastCalendarSync = QDateTime::currentDateTime(); 1229 mLastCalendarSync = QDateTime::currentDateTime();
1225 if ( mSyncManager->syncWithDesktop() ) { 1230 if ( mSyncManager->syncWithDesktop() ) {
1226 remote->resetPilotStat(1); 1231 remote->resetPilotStat(1);
1227 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1232 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1228 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1233 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1229 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1234 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1230 } else { 1235 } else {
1231 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1236 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1232 } 1237 }
1233 } 1238 }
1234 QDateTime modifiedCalendar = mLastCalendarSync; 1239 QDateTime modifiedCalendar = mLastCalendarSync;
1235 eventLSync = getLastSyncEvent(); 1240 eventLSync = getLastSyncEvent();
1236 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1241 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1237 if ( eventR ) { 1242 if ( eventR ) {
1238 eventRSync = (Event*) eventR->clone(); 1243 eventRSync = (Event*) eventR->clone();
1239 remote->deleteEvent(eventR ); 1244 remote->deleteEvent(eventR );
1240 1245
1241 } else { 1246 } else {
1242 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1247 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1243 eventRSync = (Event*)eventLSync->clone(); 1248 eventRSync = (Event*)eventLSync->clone();
1244 } else { 1249 } else {
1245 fullDateRange = true; 1250 fullDateRange = true;
1246 eventRSync = new Event(); 1251 eventRSync = new Event();
1247 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1252 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1248 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1253 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1249 eventRSync->setDtStart( mLastCalendarSync ); 1254 eventRSync->setDtStart( mLastCalendarSync );
1250 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1255 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1251 eventRSync->setCategories( i18n("SyncEvent") ); 1256 eventRSync->setCategories( i18n("SyncEvent") );
1252 } 1257 }
1253 } 1258 }
1254 if ( eventLSync->dtStart() == mLastCalendarSync ) 1259 if ( eventLSync->dtStart() == mLastCalendarSync )
1255 fullDateRange = true; 1260 fullDateRange = true;
1256 1261
1257 if ( ! fullDateRange ) { 1262 if ( ! fullDateRange ) {
1258 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1263 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1259 1264
1260 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1265 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1261 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1266 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1262 fullDateRange = true; 1267 fullDateRange = true;
1263 } 1268 }
1264 } 1269 }
1265 if ( mSyncManager->syncWithDesktop() ) { 1270 if ( mSyncManager->syncWithDesktop() ) {
1266 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1271 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1267 } 1272 }
1268 if ( fullDateRange ) 1273 if ( fullDateRange )
1269 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1274 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1270 else 1275 else
1271 mLastCalendarSync = eventLSync->dtStart(); 1276 mLastCalendarSync = eventLSync->dtStart();
1272 // for resyncing if own file has changed 1277 // for resyncing if own file has changed
1273 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1278 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1274 mLastCalendarSync = loadedFileVersion; 1279 mLastCalendarSync = loadedFileVersion;
1275 //qDebug("setting mLastCalendarSync "); 1280 //qDebug("setting mLastCalendarSync ");
1276 } 1281 }
1277 //qDebug("*************************** "); 1282 //qDebug("*************************** ");
1278 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1283 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1279 QPtrList<Incidence> er = remote->rawIncidences(); 1284 QPtrList<Incidence> er = remote->rawIncidences();
1280 Incidence* inR = er.first(); 1285 Incidence* inR = er.first();
1281 Incidence* inL; 1286 Incidence* inL;
1282 QProgressBar bar( er.count(),0 ); 1287 QProgressBar bar( er.count(),0 );
1283 bar.setCaption (i18n("Syncing - close to abort!") ); 1288 bar.setCaption (i18n("Syncing - close to abort!") );
1284 1289
1285 // ************** setting up filter ************* 1290 // ************** setting up filter *************
1286 CalFilter *filterIN = 0; 1291 CalFilter *filterIN = 0;
1287 CalFilter *filterOUT = 0; 1292 CalFilter *filterOUT = 0;
1288 CalFilter *filter = mFilters.first(); 1293 CalFilter *filter = mFilters.first();
1289 while(filter) { 1294 while(filter) {
1290 if ( filter->name() == mSyncManager->mFilterInCal ) 1295 if ( filter->name() == mSyncManager->mFilterInCal )
1291 filterIN = filter; 1296 filterIN = filter;
1292 if ( filter->name() == mSyncManager->mFilterOutCal ) 1297 if ( filter->name() == mSyncManager->mFilterOutCal )
1293 filterOUT = filter; 1298 filterOUT = filter;
1294 filter = mFilters.next(); 1299 filter = mFilters.next();
1295 } 1300 }
1296 int w = 300; 1301 int w = 300;
1297 if ( QApplication::desktop()->width() < 320 ) 1302 if ( QApplication::desktop()->width() < 320 )
1298 w = 220; 1303 w = 220;
1299 int h = bar.sizeHint().height() ; 1304 int h = bar.sizeHint().height() ;
1300 int dw = QApplication::desktop()->width(); 1305 int dw = QApplication::desktop()->width();
1301 int dh = QApplication::desktop()->height(); 1306 int dh = QApplication::desktop()->height();
1302 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1307 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1303 bar.show(); 1308 bar.show();
1304 int modulo = (er.count()/10)+1; 1309 int modulo = (er.count()/10)+1;
1305 int incCounter = 0; 1310 int incCounter = 0;
1306 while ( inR ) { 1311 while ( inR ) {
1307 if ( ! bar.isVisible() ) 1312 if ( ! bar.isVisible() )
1308 return false; 1313 return false;
1309 if ( incCounter % modulo == 0 ) 1314 if ( incCounter % modulo == 0 )
1310 bar.setProgress( incCounter ); 1315 bar.setProgress( incCounter );
1311 ++incCounter; 1316 ++incCounter;
1312 uid = inR->uid(); 1317 uid = inR->uid();
1313 bool skipIncidence = false; 1318 bool skipIncidence = false;
1314 if ( uid.left(15) == QString("last-syncEvent-") ) 1319 if ( uid.left(15) == QString("last-syncEvent-") )
1315 skipIncidence = true; 1320 skipIncidence = true;
1316 QString idS; 1321 QString idS;
1317 qApp->processEvents(); 1322 qApp->processEvents();
1318 if ( !skipIncidence ) { 1323 if ( !skipIncidence ) {
1319 inL = local->incidence( uid ); 1324 inL = local->incidence( uid );
1320 if ( inL ) { // maybe conflict - same uid in both calendars 1325 if ( inL ) { // maybe conflict - same uid in both calendars
1321 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1326 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1322 //qDebug("take %d %s ", take, inL->summary().latin1()); 1327 //qDebug("take %d %s ", take, inL->summary().latin1());
1323 if ( take == 3 ) 1328 if ( take == 3 )
1324 return false; 1329 return false;
1325 if ( take == 1 ) {// take local ********************** 1330 if ( take == 1 ) {// take local **********************
1326 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1331 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1327 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1332 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1328 else 1333 else
1329 idS = inR->IDStr(); 1334 idS = inR->IDStr();
1330 remote->deleteIncidence( inR ); 1335 remote->deleteIncidence( inR );
1331 inR = inL->clone(); 1336 inR = inL->clone();
1332 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1337 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1333 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1338 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1334 inR->setIDStr( idS ); 1339 inR->setIDStr( idS );
1335 remote->addIncidence( inR ); 1340 remote->addIncidence( inR );
1336 if ( mSyncManager->syncWithDesktop() ) 1341 if ( mSyncManager->syncWithDesktop() )
1337 inR->setPilotId( 2 ); 1342 inR->setPilotId( 2 );
1338 ++changedRemote; 1343 ++changedRemote;
1339 } else {// take remote ********************** 1344 } else {// take remote **********************
1340 idS = inL->IDStr(); 1345 idS = inL->IDStr();
1341 int pid = inL->pilotId(); 1346 int pid = inL->pilotId();
1342 local->deleteIncidence( inL ); 1347 local->deleteIncidence( inL );
1343 inL = inR->clone(); 1348 inL = inR->clone();
1344 if ( mSyncManager->syncWithDesktop() ) 1349 if ( mSyncManager->syncWithDesktop() )
1345 inL->setPilotId( pid ); 1350 inL->setPilotId( pid );
1346 inL->setIDStr( idS ); 1351 inL->setIDStr( idS );
1347 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1352 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1348 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1353 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1349 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1354 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1350 } 1355 }
1351 local->addIncidence( inL ); 1356 local->addIncidence( inL );
1352 ++changedLocal; 1357 ++changedLocal;
1353 } 1358 }
1354 } 1359 }
1355 } else { // no conflict ********** add or delete remote 1360 } else { // no conflict ********** add or delete remote
1356 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1361 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1357 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1362 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1358 QString des = eventLSync->description(); 1363 QString des = eventLSync->description();
1359 QString pref = "e"; 1364 QString pref = "e";
1360 if ( inR->typeID() == todoID ) 1365 if ( inR->typeID() == todoID )
1361 pref = "t"; 1366 pref = "t";
1362 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1367 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1363 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1368 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1364 //remote->deleteIncidence( inR ); 1369 //remote->deleteIncidence( inR );
1365 ++deletedEventR; 1370 ++deletedEventR;
1366 } else { 1371 } else {
1367 inR->setLastModified( modifiedCalendar ); 1372 inR->setLastModified( modifiedCalendar );
1368 inL = inR->clone(); 1373 inL = inR->clone();
1369 inL->setIDStr( ":" ); 1374 inL->setIDStr( ":" );
1370 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1375 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1371 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1376 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1372 local->addIncidence( inL ); 1377 local->addIncidence( inL );
1373 ++addedEvent; 1378 ++addedEvent;
1374 1379
1375 } 1380 }
1376 } else { 1381 } else {
1377 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1382 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1378 inR->setLastModified( modifiedCalendar ); 1383 inR->setLastModified( modifiedCalendar );
1379 inL = inR->clone(); 1384 inL = inR->clone();
1380 inL->setIDStr( ":" ); 1385 inL->setIDStr( ":" );
1381 local->addIncidence( inL ); 1386 local->addIncidence( inL );
1382 ++addedEvent; 1387 ++addedEvent;
1383 1388
1384 } else { 1389 } else {
1385 checkExternSyncEvent(eventRSyncSharp, inR); 1390 checkExternSyncEvent(eventRSyncSharp, inR);
1386 remote->deleteIncidence( inR ); 1391 remote->deleteIncidence( inR );
1387 ++deletedEventR; 1392 ++deletedEventR;
1388 } 1393 }
1389 } 1394 }
1390 } else { 1395 } else {
1391 ++filteredIN; 1396 ++filteredIN;
1392 } 1397 }
1393 } 1398 }
1394 } 1399 }
1395 inR = er.next(); 1400 inR = er.next();
1396 } 1401 }
1397 QPtrList<Incidence> el = local->rawIncidences(); 1402 QPtrList<Incidence> el = local->rawIncidences();
1398 inL = el.first(); 1403 inL = el.first();
1399 modulo = (el.count()/10)+1; 1404 modulo = (el.count()/10)+1;
1400 bar.setCaption (i18n("Add / remove events") ); 1405 bar.setCaption (i18n("Add / remove events") );
1401 bar.setTotalSteps ( el.count() ) ; 1406 bar.setTotalSteps ( el.count() ) ;
1402 bar.show(); 1407 bar.show();
1403 incCounter = 0; 1408 incCounter = 0;
1404 1409
1405 while ( inL ) { 1410 while ( inL ) {
1406 1411
1407 qApp->processEvents(); 1412 qApp->processEvents();
1408 if ( ! bar.isVisible() ) 1413 if ( ! bar.isVisible() )
1409 return false; 1414 return false;
1410 if ( incCounter % modulo == 0 ) 1415 if ( incCounter % modulo == 0 )
1411 bar.setProgress( incCounter ); 1416 bar.setProgress( incCounter );
1412 ++incCounter; 1417 ++incCounter;
1413 uid = inL->uid(); 1418 uid = inL->uid();
1414 bool skipIncidence = false; 1419 bool skipIncidence = false;
1415 if ( uid.left(15) == QString("last-syncEvent-") ) 1420 if ( uid.left(15) == QString("last-syncEvent-") )
1416 skipIncidence = true; 1421 skipIncidence = true;
1417 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1422 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1418 skipIncidence = true; 1423 skipIncidence = true;
1419 if ( !skipIncidence ) { 1424 if ( !skipIncidence ) {
1420 inR = remote->incidence( uid ); 1425 inR = remote->incidence( uid );
1421 if ( ! inR ) { 1426 if ( ! inR ) {
1422 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1427 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1423 // no conflict ********** add or delete local 1428 // no conflict ********** add or delete local
1424 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1429 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1425 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1430 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1426 checkExternSyncEvent(eventLSyncSharp, inL); 1431 checkExternSyncEvent(eventLSyncSharp, inL);
1427 local->deleteIncidence( inL ); 1432 local->deleteIncidence( inL );
1428 ++deletedEventL; 1433 ++deletedEventL;
1429 } else { 1434 } else {
1430 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1435 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1431 inL->removeID(mCurrentSyncDevice ); 1436 inL->removeID(mCurrentSyncDevice );
1432 ++addedEventR; 1437 ++addedEventR;
1433 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1438 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1434 inL->setLastModified( modifiedCalendar ); 1439 inL->setLastModified( modifiedCalendar );
1435 inR = inL->clone(); 1440 inR = inL->clone();
1436 inR->setIDStr( ":" ); 1441 inR->setIDStr( ":" );
1437 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1442 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1438 remote->addIncidence( inR ); 1443 remote->addIncidence( inR );
1439 } 1444 }
1440 } 1445 }
1441 } else { 1446 } else {
1442 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1447 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1443 checkExternSyncEvent(eventLSyncSharp, inL); 1448 checkExternSyncEvent(eventLSyncSharp, inL);
1444 local->deleteIncidence( inL ); 1449 local->deleteIncidence( inL );
1445 ++deletedEventL; 1450 ++deletedEventL;
1446 } else { 1451 } else {
1447 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1452 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1448 ++addedEventR; 1453 ++addedEventR;
1449 inL->setLastModified( modifiedCalendar ); 1454 inL->setLastModified( modifiedCalendar );
1450 inR = inL->clone(); 1455 inR = inL->clone();
1451 inR->setIDStr( ":" ); 1456 inR->setIDStr( ":" );
1452 remote->addIncidence( inR ); 1457 remote->addIncidence( inR );
1453 } 1458 }
1454 } 1459 }
1455 } 1460 }
1456 } else { 1461 } else {
1457 ++filteredOUT; 1462 ++filteredOUT;
1458 } 1463 }
1459 } 1464 }
1460 } 1465 }
1461 inL = el.next(); 1466 inL = el.next();
1462 } 1467 }
1463 int delFut = 0; 1468 int delFut = 0;
1464 int remRem = 0; 1469 int remRem = 0;
1465 if ( mSyncManager->mWriteBackInFuture ) { 1470 if ( mSyncManager->mWriteBackInFuture ) {
1466 er = remote->rawIncidences(); 1471 er = remote->rawIncidences();
1467 remRem = er.count(); 1472 remRem = er.count();
1468 inR = er.first(); 1473 inR = er.first();
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index c9e9870..651194b 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,658 +1,659 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 3 Copyright (c) 2000, 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 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#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#include <qscrollbar.h> 33#include <qscrollbar.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qtopia/ir.h> 35#include <qtopia/ir.h>
36#else 36#else
37#define Ir char 37#define Ir char
38#endif 38#endif
39#include <libkcal/calendar.h> 39#include <libkcal/calendar.h>
40#include <libkcal/scheduler.h> 40#include <libkcal/scheduler.h>
41#include <libkcal/calendarresources.h> 41#include <libkcal/calendarresources.h>
42#include <libkcal/resourcecalendar.h> 42#include <libkcal/resourcecalendar.h>
43#include <KDGanttMinimizeSplitter.h> 43#include <KDGanttMinimizeSplitter.h>
44 44
45#include <korganizer/calendarviewbase.h> 45#include <korganizer/calendarviewbase.h>
46 46
47#include <ksyncmanager.h> 47#include <ksyncmanager.h>
48//#include <koprefs.h> 48//#include <koprefs.h>
49 49
50class QWidgetStack; 50class QWidgetStack;
51class QSplitter; 51class QSplitter;
52class KopiCalendarFile; 52class KopiCalendarFile;
53class CalPrinter; 53class CalPrinter;
54class KOFilterView; 54class KOFilterView;
55class KOCalEditView; 55class KOCalEditView;
56class KOViewManager; 56class KOViewManager;
57class KODialogManager; 57class KODialogManager;
58class KOTodoView; 58class KOTodoView;
59class KDateNavigator; 59class KDateNavigator;
60class DateNavigatorContainer; 60class DateNavigatorContainer;
61class DateNavigator; 61class DateNavigator;
62class KOIncidenceEditor; 62class KOIncidenceEditor;
63class KDatePicker; 63class KDatePicker;
64class ResourceView; 64class ResourceView;
65class KOEventEditor; 65class KOEventEditor;
66class KOTodoEditor ; 66class KOTodoEditor ;
67class KOEventViewerDialog; 67class KOEventViewerDialog;
68class KOBeamPrefs; 68class KOBeamPrefs;
69class KSyncProfile; 69class KSyncProfile;
70class AlarmDialog; 70class AlarmDialog;
71class KCal::Attendee; 71class KCal::Attendee;
72 72
73namespace KCal { class FileStorage; } 73namespace KCal { class FileStorage; }
74 74
75using namespace KCal; 75using namespace KCal;
76 76
77/** 77/**
78 This is the main calendar widget. It provides the different vies on t he 78 This is the main calendar widget. It provides the different vies on t he
79 calendar data as well as the date navigator. It also handles synchronisation 79 calendar data as well as the date navigator. It also handles synchronisation
80 of the different views and controls the different dialogs like preferences, 80 of the different views and controls the different dialogs like preferences,
81 event editor, search dialog etc. 81 event editor, search dialog etc.
82 82
83 @short main calendar view widget 83 @short main calendar view widget
84 @author Cornelius Schumacher 84 @author Cornelius Schumacher
85*/ 85*/
86 86
87#include <qtextbrowser.h> 87#include <qtextbrowser.h>
88#include <qtextcodec.h> 88#include <qtextcodec.h>
89 89
90class MissedAlarmTextBrowser : public QTextBrowser { 90class MissedAlarmTextBrowser : public QTextBrowser {
91 Q_OBJECT 91 Q_OBJECT
92 public: 92 public:
93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start); 93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start);
94 ~MissedAlarmTextBrowser(); 94 ~MissedAlarmTextBrowser();
95 void setSource(const QString & n); 95 void setSource(const QString & n);
96 96
97 private: 97 private:
98 Incidence * getNextInc(QDateTime start ); 98 Incidence * getNextInc(QDateTime start );
99 QPtrList<Incidence> mAlarms; 99 QPtrList<Incidence> mAlarms;
100 signals: 100 signals:
101 void showIncidence( QString uid); 101 void showIncidence( QString uid);
102}; 102};
103 103
104 104
105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
106{ 106{
107 Q_OBJECT 107 Q_OBJECT
108 public: 108 public:
109 /** 109 /**
110 Constructs a new calendar view widget. 110 Constructs a new calendar view widget.
111 111
112 @param calendar calendar document 112 @param calendar calendar document
113 @param parent parent window 113 @param parent parent window
114 @param name Qt internal widget object name 114 @param name Qt internal widget object name
115 */ 115 */
116 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 116 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
117 const char *name = 0 ); 117 const char *name = 0 );
118 CalendarView( Calendar *calendar, QWidget *parent = 0, 118 CalendarView( Calendar *calendar, QWidget *parent = 0,
119 const char *name = 0 ); 119 const char *name = 0 );
120 virtual ~CalendarView(); 120 virtual ~CalendarView();
121 121
122 Calendar *calendar() { return mCalendar; } 122 Calendar *calendar() { return mCalendar; }
123 123
124 KOViewManager *viewManager(); 124 KOViewManager *viewManager();
125 KODialogManager *dialogManager(); 125 KODialogManager *dialogManager();
126 126
127 QDate startDate(); 127 QDate startDate();
128 QDate endDate(); 128 QDate endDate();
129 129
130 QWidgetStack *viewStack(); 130 QWidgetStack *viewStack();
131 QWidget *leftFrame(); 131 QWidget *leftFrame();
132 132
133 DateNavigator *dateNavigator(); 133 DateNavigator *dateNavigator();
134 KDateNavigator *dateNavigatorWidget(); 134 KDateNavigator *dateNavigatorWidget();
135 135
136 void addView(KOrg::BaseView *); 136 void addView(KOrg::BaseView *);
137 void showView(KOrg::BaseView *); 137 void showView(KOrg::BaseView *);
138 KOEventViewerDialog* getEventViewerDialog(); 138 KOEventViewerDialog* getEventViewerDialog();
139 Incidence *currentSelection(); 139 Incidence *currentSelection();
140 void checkSuspendAlarm(); 140 void checkSuspendAlarm();
141 141
142 signals: 142 signals:
143 void save (); 143 void save ();
144 void saveStopTimer (); 144 void saveStopTimer ();
145 void tempDisableBR(bool); 145 void tempDisableBR(bool);
146 /** This todo has been modified */ 146 /** This todo has been modified */
147 void todoModified(Todo *, int); 147 void todoModified(Todo *, int);
148 148
149 /** when change is made to options dialog, the topwidget will catch this 149 /** when change is made to options dialog, the topwidget will catch this
150 * and emit this signal which notifies all widgets which have registered 150 * and emit this signal which notifies all widgets which have registered
151 * for notification to update their settings. */ 151 * for notification to update their settings. */
152 void configChanged(); 152 void configChanged();
153 /** emitted when the topwidget is closing down, so that any attached 153 /** emitted when the topwidget is closing down, so that any attached
154 child windows can also close. */ 154 child windows can also close. */
155 void closingDown(); 155 void closingDown();
156 /** emitted right before we die */ 156 /** emitted right before we die */
157 void closed(QWidget *); 157 void closed(QWidget *);
158 158
159 /** Emitted when state of modified flag changes */ 159 /** Emitted when state of modified flag changes */
160 void modifiedChanged(bool); 160 void modifiedChanged(bool);
161 void signalmodified(); 161 void signalmodified();
162 162
163 /** Emitted when state of read-only flag changes */ 163 /** Emitted when state of read-only flag changes */
164 void readOnlyChanged(bool); 164 void readOnlyChanged(bool);
165 165
166 /** Emitted when the unit of navigation changes */ 166 /** Emitted when the unit of navigation changes */
167 void changeNavStringPrev(const QString &); 167 void changeNavStringPrev(const QString &);
168 void changeNavStringNext(const QString &); 168 void changeNavStringNext(const QString &);
169 169
170 /** Emitted when state of events selection has changed and user is organizer*/ 170 /** Emitted when state of events selection has changed and user is organizer*/
171 void organizerEventsSelected(bool); 171 void organizerEventsSelected(bool);
172 /** Emitted when state of events selection has changed and user is attendee*/ 172 /** Emitted when state of events selection has changed and user is attendee*/
173 void groupEventsSelected(bool); 173 void groupEventsSelected(bool);
174 /** 174 /**
175 Emitted when an incidence gets selected. If the selection is cleared the 175 Emitted when an incidence gets selected. If the selection is cleared the
176 signal is emitted with 0 as argument. 176 signal is emitted with 0 as argument.
177 */ 177 */
178 void incidenceSelected( Incidence * ); 178 void incidenceSelected( Incidence * );
179 /** Emitted, when a todoitem is selected or deselected. */ 179 /** Emitted, when a todoitem is selected or deselected. */
180 void todoSelected( bool ); 180 void todoSelected( bool );
181 181
182 /** 182 /**
183 Emitted, when clipboard content changes. Parameter indicates if paste 183 Emitted, when clipboard content changes. Parameter indicates if paste
184 is possible or not. 184 is possible or not.
185 */ 185 */
186 void pasteEnabled(bool); 186 void pasteEnabled(bool);
187 187
188 /** Emitted, when the number of incoming messages has changed. */ 188 /** Emitted, when the number of incoming messages has changed. */
189 void numIncomingChanged(int); 189 void numIncomingChanged(int);
190 190
191 /** Emitted, when the number of outgoing messages has changed. */ 191 /** Emitted, when the number of outgoing messages has changed. */
192 void numOutgoingChanged(int); 192 void numOutgoingChanged(int);
193 193
194 /** Send status message, which can e.g. be displayed in the status bar. */ 194 /** Send status message, which can e.g. be displayed in the status bar. */
195 void statusMessage(const QString &); 195 void statusMessage(const QString &);
196 196
197 void calendarViewExpanded( bool ); 197 void calendarViewExpanded( bool );
198 void updateSearchDialog(); 198 void updateSearchDialog();
199 void filtersUpdated(); 199 void filtersUpdated();
200 200
201 201
202 public slots: 202 public slots:
203 void checkAlarms(); 203 void checkAlarms();
204 void checkFiles();
204 void slotprintSelInc(); 205 void slotprintSelInc();
205 void showNextAlarms(); 206 void showNextAlarms();
206 void showOpenError(); 207 void showOpenError();
207 void watchSavedFile(); 208 void watchSavedFile();
208 void recheckTimerAlarm(); 209 void recheckTimerAlarm();
209 void checkNextTimerAlarm(); 210 void checkNextTimerAlarm();
210 void addAlarm(const QDateTime &qdt, const QString &noti ); 211 void addAlarm(const QDateTime &qdt, const QString &noti );
211 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 212 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
212 void removeAlarm(const QDateTime &qdt, const QString &noti ); 213 void removeAlarm(const QDateTime &qdt, const QString &noti );
213 214
214 /** options dialog made a changed to the configuration. we catch this 215 /** options dialog made a changed to the configuration. we catch this
215 * and notify all widgets which need to update their configuration. */ 216 * and notify all widgets which need to update their configuration. */
216 void updateConfig(); 217 void updateConfig();
217 218
218 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 219 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
219 const QStringList& anniversaryList, const QStringList& realNameList, 220 const QStringList& anniversaryList, const QStringList& realNameList,
220 const QStringList& emailList, const QStringList& assembledNameList, 221 const QStringList& emailList, const QStringList& assembledNameList,
221 const QStringList& uidList); 222 const QStringList& uidList);
222 223
223 /** 224 /**
224 Load calendar from file \a filename. If \a merge is true, load 225 Load calendar from file \a filename. If \a merge is true, load
225 calendar into existing one, if it is false, clear calendar, before 226 calendar into existing one, if it is false, clear calendar, before
226 loading. Return true, if calendar could be successfully loaded. 227 loading. Return true, if calendar could be successfully loaded.
227 */ 228 */
228 bool openCalendar(QString filename, bool merge=false); 229 bool openCalendar(QString filename, bool merge=false);
229 bool loadCalendars(); 230 bool loadCalendars();
230 bool saveCalendars(); 231 bool saveCalendars();
231 bool restoreCalendarSettings(); 232 bool restoreCalendarSettings();
232 bool addCalendar( KopiCalendarFile * ); 233 bool addCalendar( KopiCalendarFile * );
233 void addCalendarId( int id ); 234 void addCalendarId( int id );
234 bool syncCalendar(QString filename,int mode = 0 ); 235 bool syncCalendar(QString filename,int mode = 0 );
235 236
236 /** 237 /**
237 Save calendar data to file. Return true if calendar could be 238 Save calendar data to file. Return true if calendar could be
238 successfully saved. 239 successfully saved.
239 */ 240 */
240 bool saveCalendar(QString filename); 241 bool saveCalendar(QString filename);
241 242
242 /** 243 /**
243 Close calendar. Clear calendar data and reset views to display an empty 244 Close calendar. Clear calendar data and reset views to display an empty
244 calendar. 245 calendar.
245 */ 246 */
246 void closeCalendar(); 247 void closeCalendar();
247 248
248 /** Archive old events of calendar */ 249 /** Archive old events of calendar */
249 void archiveCalendar(); 250 void archiveCalendar();
250 251
251 void showIncidence(); 252 void showIncidence();
252 void editIncidence(); 253 void editIncidence();
253 void editIncidenceDescription(); 254 void editIncidenceDescription();
254 void deleteIncidence(); 255 void deleteIncidence();
255 void cloneIncidence(); 256 void cloneIncidence();
256 void moveIncidence(); 257 void moveIncidence();
257 void beamIncidence(); 258 void beamIncidence();
258 void toggleCancelIncidence(); 259 void toggleCancelIncidence();
259 260
260 /** create an editeventwin with supplied date/time, and if bool is true, 261 /** create an editeventwin with supplied date/time, and if bool is true,
261 * make the event take all day. */ 262 * make the event take all day. */
262 void newEvent(QDateTime, QDateTime, bool allDay ); 263 void newEvent(QDateTime, QDateTime, bool allDay );
263 void newEvent(QDateTime, QDateTime); 264 void newEvent(QDateTime, QDateTime);
264 void newEvent(QDateTime fh); 265 void newEvent(QDateTime fh);
265 void newEvent(QDate dt); 266 void newEvent(QDate dt);
266 /** create new event without having a date hint. Takes current date as 267 /** create new event without having a date hint. Takes current date as
267 default hint. */ 268 default hint. */
268 void newEvent(); 269 void newEvent();
269 void newFloatingEvent(); 270 void newFloatingEvent();
270 271
271 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 272 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
272 void showIncidence(Incidence *); 273 void showIncidence(Incidence *);
273 void showIncidence(QString uid); 274 void showIncidence(QString uid);
274 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 275 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
275 void editIncidence(Incidence *); 276 void editIncidence(Incidence *);
276 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 277 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
277 void deleteIncidence(Incidence *); 278 void deleteIncidence(Incidence *);
278 void cloneIncidence(Incidence *); 279 void cloneIncidence(Incidence *);
279 void cancelIncidence(Incidence *); 280 void cancelIncidence(Incidence *);
280 /** Create an editor for the supplied event. */ 281 /** Create an editor for the supplied event. */
281 void editEvent(Event *); 282 void editEvent(Event *);
282 /** Delete the supplied event. */ 283 /** Delete the supplied event. */
283 void deleteEvent(Event *); 284 void deleteEvent(Event *);
284 /** Delete the event with the given unique ID. Returns false, if event wasn't 285 /** Delete the event with the given unique ID. Returns false, if event wasn't
285 found. */ 286 found. */
286 bool deleteEvent(const QString &uid); 287 bool deleteEvent(const QString &uid);
287 /** Create a read-only viewer dialog for the supplied event. */ 288 /** Create a read-only viewer dialog for the supplied event. */
288 void showEvent(Event *); 289 void showEvent(Event *);
289 290
290 void editJournal(Journal *); 291 void editJournal(Journal *);
291 void showJournal(Journal *); 292 void showJournal(Journal *);
292 void deleteJournal(Journal *); 293 void deleteJournal(Journal *);
293 /** Create an editor dialog for a todo */ 294 /** Create an editor dialog for a todo */
294 void editTodo(Todo *); 295 void editTodo(Todo *);
295 /** Create a read-only viewer dialog for the supplied todo */ 296 /** Create a read-only viewer dialog for the supplied todo */
296 void showTodo(Todo *); 297 void showTodo(Todo *);
297 /** create new todo */ 298 /** create new todo */
298 void newTodo(); 299 void newTodo();
299 void newTodoDateTime(QDateTime, bool allday); 300 void newTodoDateTime(QDateTime, bool allday);
300 /** create new todo with a parent todo */ 301 /** create new todo with a parent todo */
301 void newSubTodo(); 302 void newSubTodo();
302 /** create new todo with a parent todo */ 303 /** create new todo with a parent todo */
303 void newSubTodo(Todo *); 304 void newSubTodo(Todo *);
304 /** Delete todo */ 305 /** Delete todo */
305 void deleteTodo(Todo *); 306 void deleteTodo(Todo *);
306 307
307 308
308 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 309 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
309 * emitted as result. */ 310 * emitted as result. */
310 void checkClipboard(); 311 void checkClipboard();
311 312
312 /** using the KConfig associated with the kapp variable, read in the 313 /** using the KConfig associated with the kapp variable, read in the
313 * settings from the config file. 314 * settings from the config file.
314 */ 315 */
315 void readSettings(); 316 void readSettings();
316 317
317 /** write current state to config file. */ 318 /** write current state to config file. */
318 void writeSettings(); 319 void writeSettings();
319 320
320 /** read settings for calendar filters */ 321 /** read settings for calendar filters */
321 void readFilterSettings(KConfig *config); 322 void readFilterSettings(KConfig *config);
322 323
323 /** write settings for calendar filters */ 324 /** write settings for calendar filters */
324 void writeFilterSettings(KConfig *config); 325 void writeFilterSettings(KConfig *config);
325 326
326 /** passes on the message that an event has changed to the currently 327 /** passes on the message that an event has changed to the currently
327 * activated view so that it can make appropriate display changes. */ 328 * activated view so that it can make appropriate display changes. */
328 void changeEventDisplay(Event *, int); 329 void changeEventDisplay(Event *, int);
329 void changeIncidenceDisplay(Incidence *, int); 330 void changeIncidenceDisplay(Incidence *, int);
330 void changeTodoDisplay(Todo *, int); 331 void changeTodoDisplay(Todo *, int);
331 332
332 void eventAdded(Event *); 333 void eventAdded(Event *);
333 void eventChanged(Event *); 334 void eventChanged(Event *);
334 void eventToBeDeleted(Event *); 335 void eventToBeDeleted(Event *);
335 void eventDeleted(); 336 void eventDeleted();
336 337
337 void todoAdded(Todo *); 338 void todoAdded(Todo *);
338 void todoChanged(Todo *); 339 void todoChanged(Todo *);
339 void todoToBeDeleted(Todo *); 340 void todoToBeDeleted(Todo *);
340 void todoDeleted(); 341 void todoDeleted();
341 342
342 void updateView(const QDate &start, const QDate &end); 343 void updateView(const QDate &start, const QDate &end);
343 void updateView(); 344 void updateView();
344 void clearAllViews(); 345 void clearAllViews();
345 346
346 /** Full update of visible todo views */ 347 /** Full update of visible todo views */
347 void updateTodoViews(); 348 void updateTodoViews();
348 349
349 void updateUnmanagedViews(); 350 void updateUnmanagedViews();
350 351
351 /** cut the current appointment to the clipboard */ 352 /** cut the current appointment to the clipboard */
352 void edit_cut(); 353 void edit_cut();
353 354
354 /** copy the current appointment(s) to the clipboard */ 355 /** copy the current appointment(s) to the clipboard */
355 void edit_copy(); 356 void edit_copy();
356 357
357 /** paste the current vobject(s) in the clipboard buffer into calendar */ 358 /** paste the current vobject(s) in the clipboard buffer into calendar */
358 void edit_paste(); 359 void edit_paste();
359 360
360 /** edit viewing and configuration options. */ 361 /** edit viewing and configuration options. */
361 void edit_options(); 362 void edit_options();
362 void edit_global_options(); 363 void edit_global_options();
363 /** 364 /**
364 Functions for printing, previewing a print, and setting up printing 365 Functions for printing, previewing a print, and setting up printing
365 parameters. 366 parameters.
366 */ 367 */
367 void print(); 368 void print();
368 void printSetup(); 369 void printSetup();
369 void printPreview(); 370 void printPreview();
370 371
371 /** Export as iCalendar file */ 372 /** Export as iCalendar file */
372 void exportICalendar(); 373 void exportICalendar();
373 374
374 /** Export as vCalendar file */ 375 /** Export as vCalendar file */
375 bool exportVCalendar( QString fn); 376 bool exportVCalendar( QString fn);
376 377
377 /** pop up a dialog to show an existing appointment. */ 378 /** pop up a dialog to show an existing appointment. */
378 void appointment_show(); 379 void appointment_show();
379 /** 380 /**
380 * pop up an Appointment Dialog to edit an existing appointment.Get 381 * pop up an Appointment Dialog to edit an existing appointment.Get
381 * information on the appointment from the list of unique IDs that is 382 * information on the appointment from the list of unique IDs that is
382 * currently in the View, called currIds. 383 * currently in the View, called currIds.
383 */ 384 */
384 void appointment_edit(); 385 void appointment_edit();
385 /** 386 /**
386 * pop up dialog confirming deletion of currently selected event in the 387 * pop up dialog confirming deletion of currently selected event in the
387 * View. 388 * View.
388 */ 389 */
389 void appointment_delete(); 390 void appointment_delete();
390 391
391 /** mails the currently selected event to a particular user as a vCalendar 392 /** mails the currently selected event to a particular user as a vCalendar
392 attachment. */ 393 attachment. */
393 void action_mail(); 394 void action_mail();
394 395
395 /* frees a subtodo from it's relation */ 396 /* frees a subtodo from it's relation */
396 void todo_unsub( Todo * ); 397 void todo_unsub( Todo * );
397 void todo_resub( Todo * parent, Todo * sub ); 398 void todo_resub( Todo * parent, Todo * sub );
398 399
399 /** Take ownership of selected event. */ 400 /** Take ownership of selected event. */
400 void takeOverEvent(); 401 void takeOverEvent();
401 402
402 /** Take ownership of all events in calendar. */ 403 /** Take ownership of all events in calendar. */
403 void takeOverCalendar(); 404 void takeOverCalendar();
404 405
405 /** query whether or not the calendar is "dirty". */ 406 /** query whether or not the calendar is "dirty". */
406 bool isModified(); 407 bool isModified();
407 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 408 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
408 void setModified(bool modified=true); 409 void setModified(bool modified=true);
409 410
410 /** query if the calendar is read-only. */ 411 /** query if the calendar is read-only. */
411 bool isReadOnly(); 412 bool isReadOnly();
412 /** set state of calendar to read-only */ 413 /** set state of calendar to read-only */
413 void setReadOnly(bool readOnly=true); 414 void setReadOnly(bool readOnly=true);
414 415
415 void eventUpdated(Incidence *); 416 void eventUpdated(Incidence *);
416 417
417 /* iTIP scheduling actions */ 418 /* iTIP scheduling actions */
418 void schedule_publish(Incidence *incidence = 0); 419 void schedule_publish(Incidence *incidence = 0);
419 void schedule_request(Incidence *incidence = 0); 420 void schedule_request(Incidence *incidence = 0);
420 void schedule_refresh(Incidence *incidence = 0); 421 void schedule_refresh(Incidence *incidence = 0);
421 void schedule_cancel(Incidence *incidence = 0); 422 void schedule_cancel(Incidence *incidence = 0);
422 void schedule_add(Incidence *incidence = 0); 423 void schedule_add(Incidence *incidence = 0);
423 void schedule_reply(Incidence *incidence = 0); 424 void schedule_reply(Incidence *incidence = 0);
424 void schedule_counter(Incidence *incidence = 0); 425 void schedule_counter(Incidence *incidence = 0);
425 void schedule_declinecounter(Incidence *incidence = 0); 426 void schedule_declinecounter(Incidence *incidence = 0);
426 void schedule_publish_freebusy(int daysToPublish = 30); 427 void schedule_publish_freebusy(int daysToPublish = 30);
427 428
428 void openAddressbook(); 429 void openAddressbook();
429 430
430 void editFilters(); 431 void editFilters();
431 void toggleFilerEnabled(); 432 void toggleFilerEnabled();
432 QPtrList<CalFilter> filters(); 433 QPtrList<CalFilter> filters();
433 void toggleFilter(); 434 void toggleFilter();
434 void showFilter(bool visible); 435 void showFilter(bool visible);
435 void updateFilter(); 436 void updateFilter();
436 void filterEdited(); 437 void filterEdited();
437 void selectFilter( int ); 438 void selectFilter( int );
438 KOFilterView *filterView(); 439 KOFilterView *filterView();
439 440
440 void showIntro(); 441 void showIntro();
441 442
442 /** Move the curdatepient view date to today */ 443 /** Move the curdatepient view date to today */
443 void goToday(); 444 void goToday();
444 445
445 /** Move to the next date(s) in the current view */ 446 /** Move to the next date(s) in the current view */
446 void goNext(); 447 void goNext();
447 448
448 /** Move to the previous date(s) in the current view */ 449 /** Move to the previous date(s) in the current view */
449 void goPrevious(); 450 void goPrevious();
450 /** Move to the next date(s) in the current view */ 451 /** Move to the next date(s) in the current view */
451 void goNextMonth(); 452 void goNextMonth();
452 453
453 /** Move to the previous date(s) in the current view */ 454 /** Move to the previous date(s) in the current view */
454 void goPreviousMonth(); 455 void goPreviousMonth();
455 456
456 void toggleExpand(); 457 void toggleExpand();
457 void toggleDateNavigatorWidget(); 458 void toggleDateNavigatorWidget();
458 void toggleAllDaySize(); 459 void toggleAllDaySize();
459 460
460 /** Look for new messages in the inbox */ 461 /** Look for new messages in the inbox */
461 void lookForIncomingMessages(); 462 void lookForIncomingMessages();
462 /** Look for new messages in the outbox */ 463 /** Look for new messages in the outbox */
463 void lookForOutgoingMessages(); 464 void lookForOutgoingMessages();
464 465
465 void processMainViewSelection( Incidence * ); 466 void processMainViewSelection( Incidence * );
466 void processTodoListSelection( Incidence * ); 467 void processTodoListSelection( Incidence * );
467 468
468 void processIncidenceSelection( Incidence * ); 469 void processIncidenceSelection( Incidence * );
469 470
470 void purgeCompleted(); 471 void purgeCompleted();
471 bool removeCompletedSubTodos( Todo* ); 472 bool removeCompletedSubTodos( Todo* );
472 void slotCalendarChanged(); 473 void slotCalendarChanged();
473 bool importBday(); 474 bool importBday();
474 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 475 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
475 bool importQtopia( const QString &categoriesFile, 476 bool importQtopia( const QString &categoriesFile,
476 const QString &datebookFile, 477 const QString &datebookFile,
477 const QString &tasklistFile ); 478 const QString &tasklistFile );
478 void syncExternal( int mode ); 479 void syncExternal( int mode );
479 void slotSelectPickerDate( QDate ) ; 480 void slotSelectPickerDate( QDate ) ;
480 void showDatePicker() ; 481 void showDatePicker() ;
481 void showDatePickerPopup() ; 482 void showDatePickerPopup() ;
482 void moveIncidence(Incidence *) ; 483 void moveIncidence(Incidence *) ;
483 void beamIncidence(Incidence *) ; 484 void beamIncidence(Incidence *) ;
484 void beamCalendar() ; 485 void beamCalendar() ;
485 void beamFilteredCalendar() ; 486 void beamFilteredCalendar() ;
486 void beamIncidenceList(QPtrList<Incidence>) ; 487 void beamIncidenceList(QPtrList<Incidence>) ;
487 void manageCategories(); 488 void manageCategories();
488 void editCategories(); 489 void editCategories();
489 int addCategories(); 490 int addCategories();
490 void removeCategories(); 491 void removeCategories();
491 void setSyncDevice( QString ); 492 void setSyncDevice( QString );
492 void setSyncName( QString ); 493 void setSyncName( QString );
493 void showDay( QDate ); 494 void showDay( QDate );
494 void undo_delete(); 495 void undo_delete();
495 protected slots: 496 protected slots:
496 void resetFocus(); 497 void resetFocus();
497 void scrollBarValue(int); 498 void scrollBarValue(int);
498 void slotViewerClosed(); 499 void slotViewerClosed();
499 void timerAlarm(); 500 void timerAlarm();
500 void suspendAlarm(); 501 void suspendAlarm();
501 void beamDone( Ir *ir ); 502 void beamDone( Ir *ir );
502 /** Select a view or adapt the current view to display the specified dates. */ 503 /** Select a view or adapt the current view to display the specified dates. */
503 void showDates( const KCal::DateList & ); 504 void showDates( const KCal::DateList & );
504 void selectWeekNum ( int ); 505 void selectWeekNum ( int );
505 506
506 public: 507 public:
507 // show a standard warning 508 // show a standard warning
508 // returns KMsgBox::yesNoCancel() 509 // returns KMsgBox::yesNoCancel()
509 int msgCalModified(); 510 int msgCalModified();
510 virtual bool sync(KSyncManager* manager, QString filename, int mode); 511 virtual bool sync(KSyncManager* manager, QString filename, int mode);
511 512
512 virtual bool syncExternal(KSyncManager* manager, QString resource); 513 virtual bool syncExternal(KSyncManager* manager, QString resource);
513 virtual void removeSyncInfo( QString syncProfile); 514 virtual void removeSyncInfo( QString syncProfile);
514 void setSyncManager(KSyncManager* manager); 515 void setSyncManager(KSyncManager* manager);
515 void setLoadedFileVersion(QDateTime); 516 void setLoadedFileVersion(QDateTime);
516 bool checkFileVersion(QString fn); 517 bool checkFileVersion(QString fn);
517 bool checkAllFileVersions(); 518 bool checkAllFileVersions();
518 bool checkFileChanged(QString fn); 519 bool checkFileChanged(QString fn);
519 Event* getLastSyncEvent(); 520 Event* getLastSyncEvent();
520 /** Adapt navigation units correpsonding to step size of navigation of the 521 /** Adapt navigation units correpsonding to step size of navigation of the
521 * current view. 522 * current view.
522 */ 523 */
523 void adaptNavigationUnits(); 524 void adaptNavigationUnits();
524 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 525 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
525 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 526 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
526 //Attendee* getYourAttendee(Event *event); 527 //Attendee* getYourAttendee(Event *event);
527 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 528 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
528 void setScrollBarStep(int val ); 529 void setScrollBarStep(int val );
529 530
530 protected: 531 protected:
531 void schedule(Scheduler::Method, Incidence *incidence = 0); 532 void schedule(Scheduler::Method, Incidence *incidence = 0);
532 533
533 // returns KMsgBox::OKCandel() 534 // returns KMsgBox::OKCandel()
534 int msgItemDelete(const QString name); 535 int msgItemDelete(const QString name);
535 void showEventEditor(); 536 void showEventEditor();
536 void showTodoEditor(); 537 void showTodoEditor();
537 Todo *selectedTodo(); 538 Todo *selectedTodo();
538 private: 539 private:
539#ifdef DESKTOP_VERSION 540#ifdef DESKTOP_VERSION
540 QScrollBar * mDateScrollBar; 541 QScrollBar * mDateScrollBar;
541#endif 542#endif
542 QDateTime mNextAlarmDateTime; 543 QDateTime mNextAlarmDateTime;
543 bool mViewerCallerIsSearchDialog; 544 bool mViewerCallerIsSearchDialog;
544 bool mBlockShowDates; 545 bool mBlockShowDates;
545 KSyncManager* mSyncManager; 546 KSyncManager* mSyncManager;
546 AlarmDialog * mAlarmDialog; 547 AlarmDialog * mAlarmDialog;
547 QString mAlarmNotification; 548 QString mAlarmNotification;
548 QString mSuspendAlarmNotification; 549 QString mSuspendAlarmNotification;
549 QTimer* mSuspendTimer; 550 QTimer* mSuspendTimer;
550 QTimer* mAlarmTimer; 551 QTimer* mAlarmTimer;
551 QTimer* mRecheckAlarmTimer; 552 QTimer* mRecheckAlarmTimer;
552 void computeAlarm( QString ); 553 void computeAlarm( QString );
553 void startAlarm( QString, QString ); 554 void startAlarm( QString, QString );
554 void setSyncEventsReadOnly(); 555 void setSyncEventsReadOnly();
555 556
556 QDateTime loadedFileVersion; 557 QDateTime loadedFileVersion;
557 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 558 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
558 void checkExternalId( Incidence * inc ); 559 void checkExternalId( Incidence * inc );
559 int mGlobalSyncMode; 560 int mGlobalSyncMode;
560 QString mCurrentSyncDevice; 561 QString mCurrentSyncDevice;
561 QString mCurrentSyncName; 562 QString mCurrentSyncName;
562 void init(); 563 void init();
563 int mDatePickerMode; 564 int mDatePickerMode;
564 bool mFlagEditDescription; 565 bool mFlagEditDescription;
565 QDateTime mLastCalendarSync; 566 QDateTime mLastCalendarSync;
566 void createPrinter(); 567 void createPrinter();
567 568
568 void calendarModified( bool, Calendar * ); 569 void calendarModified( bool, Calendar * );
569 570
570 CalPrinter *mCalPrinter; 571 CalPrinter *mCalPrinter;
571 572
572 QSplitter *mPanner; 573 QSplitter *mPanner;
573 QSplitter *mLeftSplitter; 574 QSplitter *mLeftSplitter;
574 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 575 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
575 QWidgetStack *mRightFrame; 576 QWidgetStack *mRightFrame;
576 577
577 KDatePicker* mDatePicker; 578 KDatePicker* mDatePicker;
578 QVBox* mDateFrame; 579 QVBox* mDateFrame;
579 580
580 DateNavigatorContainer *mDateNavigator; // widget showing small month view. 581 DateNavigatorContainer *mDateNavigator; // widget showing small month view.
581 582
582 KOFilterView *mFilterView; 583 KOFilterView *mFilterView;
583 KOCalEditView *mCalEditView; 584 KOCalEditView *mCalEditView;
584 585
585 ResourceView *mResourceView; 586 ResourceView *mResourceView;
586 587
587 // calendar object for this viewing instance 588 // calendar object for this viewing instance
588 Calendar *mCalendar; 589 Calendar *mCalendar;
589 590
590 CalendarResourceManager *mResourceManager; 591 CalendarResourceManager *mResourceManager;
591 592
592 FileStorage *mStorage; 593 FileStorage *mStorage;
593 594
594 DateNavigator *mNavigator; 595 DateNavigator *mNavigator;
595 596
596 KOViewManager *mViewManager; 597 KOViewManager *mViewManager;
597 KODialogManager *mDialogManager; 598 KODialogManager *mDialogManager;
598 599
599 // Calendar filters 600 // Calendar filters
600 QPtrList<CalFilter> mFilters; 601 QPtrList<CalFilter> mFilters;
601 602
602 // various housekeeping variables. 603 // various housekeeping variables.
603 bool mModified; // flag indicating if calendar is modified 604 bool mModified; // flag indicating if calendar is modified
604 bool mReadOnly; // flag indicating if calendar is read-only 605 bool mReadOnly; // flag indicating if calendar is read-only
605 QDate mSaveSingleDate; 606 QDate mSaveSingleDate;
606 607
607 Incidence *mSelectedIncidence; 608 Incidence *mSelectedIncidence;
608 Incidence *mMoveIncidence; 609 Incidence *mMoveIncidence;
609 QDate mMoveIncidenceOldDate; 610 QDate mMoveIncidenceOldDate;
610 KOTodoView *mTodoList; 611 KOTodoView *mTodoList;
611 KOEventEditor * mEventEditor; 612 KOEventEditor * mEventEditor;
612 KOTodoEditor * mTodoEditor; 613 KOTodoEditor * mTodoEditor;
613 KOEventViewerDialog * mEventViewerDialog; 614 KOEventViewerDialog * mEventViewerDialog;
614 void keyPressEvent ( QKeyEvent *e) ; 615 void keyPressEvent ( QKeyEvent *e) ;
615 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 616 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
616}; 617};
617 618
618 619
619class CalendarViewVisitor : public Incidence::Visitor 620class CalendarViewVisitor : public Incidence::Visitor
620{ 621{
621 public: 622 public:
622 CalendarViewVisitor() : mView( 0 ) {} 623 CalendarViewVisitor() : mView( 0 ) {}
623 624
624 bool act( Incidence *incidence, CalendarView *view ) 625 bool act( Incidence *incidence, CalendarView *view )
625 { 626 {
626 mView = view; 627 mView = view;
627 return incidence->accept( *this ); 628 return incidence->accept( *this );
628 } 629 }
629 630
630 protected: 631 protected:
631 CalendarView *mView; 632 CalendarView *mView;
632}; 633};
633 634
634class ShowIncidenceVisitor : public CalendarViewVisitor 635class ShowIncidenceVisitor : public CalendarViewVisitor
635{ 636{
636 protected: 637 protected:
637 bool visit( Event *event ) { mView->showEvent( event ); return true; } 638 bool visit( Event *event ) { mView->showEvent( event ); return true; }
638 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 639 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
639 bool visit( Journal * j ) { mView->showJournal( j );return true; } 640 bool visit( Journal * j ) { mView->showJournal( j );return true; }
640}; 641};
641 642
642class EditIncidenceVisitor : public CalendarViewVisitor 643class EditIncidenceVisitor : public CalendarViewVisitor
643{ 644{
644 protected: 645 protected:
645 bool visit( Event *event ) { mView->editEvent( event ); return true; } 646 bool visit( Event *event ) { mView->editEvent( event ); return true; }
646 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 647 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
647 bool visit( Journal *j ) { mView->editJournal( j); return true; } 648 bool visit( Journal *j ) { mView->editJournal( j); return true; }
648}; 649};
649 650
650class DeleteIncidenceVisitor : public CalendarViewVisitor 651class DeleteIncidenceVisitor : public CalendarViewVisitor
651{ 652{
652 protected: 653 protected:
653 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 654 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
654 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 655 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
655 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 656 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
656}; 657};
657 658
658#endif 659#endif
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 3cde103..20118aa 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -1,454 +1,456 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qdialog.h> 29#include <qdialog.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qtextcodec.h> 31#include <qtextcodec.h>
32 32
33 33
34#include <libkcal/calfilter.h> 34#include <libkcal/calfilter.h>
35 35
36#include "kofilterview.h" 36#include "kofilterview.h"
37#include "koprefs.h" 37#include "koprefs.h"
38#include <kiconloader.h> 38#include <kiconloader.h>
39#include <kglobal.h> 39#include <kglobal.h>
40#include <kcolorbutton.h> 40#include <kcolorbutton.h>
41#include <kmessagebox.h> 41#include <kmessagebox.h>
42 42
43 43
44 44
45 45
46 46
47KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 47KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
48 const char* name,WFlags fl ) 48 const char* name,WFlags fl )
49 : KOFilterView_base(parent,name,fl) 49 : KOFilterView_base(parent,name,fl)
50{ 50{
51 mFilters = filterList; 51 mFilters = filterList;
52 52
53 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 53 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
54 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 54 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
55 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 55 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
56} 56}
57 57
58KOFilterView::~KOFilterView() 58KOFilterView::~KOFilterView()
59{ 59{
60 // no need to delete child widgets, Qt does it all for us 60 // no need to delete child widgets, Qt does it all for us
61} 61}
62 62
63bool KOFilterView::filtersEnabled() 63bool KOFilterView::filtersEnabled()
64{ 64{
65 return mEnabledCheck->isChecked(); 65 return mEnabledCheck->isChecked();
66} 66}
67 67
68void KOFilterView::setFiltersEnabled(bool set) 68void KOFilterView::setFiltersEnabled(bool set)
69{ 69{
70 mEnabledCheck->setChecked(set); 70 mEnabledCheck->setChecked(set);
71 emit filterChanged(); 71 emit filterChanged();
72} 72}
73 73
74 74
75void KOFilterView::updateFilters() 75void KOFilterView::updateFilters()
76{ 76{
77 mSelectionCombo->clear(); 77 mSelectionCombo->clear();
78 78
79 CalFilter *filter = mFilters->first(); 79 CalFilter *filter = mFilters->first();
80 while(filter) { 80 while(filter) {
81 mSelectionCombo->insertItem(filter->name()); 81 mSelectionCombo->insertItem(filter->name());
82 filter = mFilters->next(); 82 filter = mFilters->next();
83 } 83 }
84} 84}
85 85
86CalFilter *KOFilterView::selectedFilter() 86CalFilter *KOFilterView::selectedFilter()
87{ 87{
88 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 88 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
89 return f; 89 return f;
90} 90}
91 91
92void KOFilterView::setSelectedFilter(QString filterName) 92void KOFilterView::setSelectedFilter(QString filterName)
93{ 93{
94 int filter_num = mSelectionCombo->count(); 94 int filter_num = mSelectionCombo->count();
95 int i; 95 int i;
96 for (i=0;i<filter_num;i++) { 96 for (i=0;i<filter_num;i++) {
97 if (mSelectionCombo->text(i)==filterName) 97 if (mSelectionCombo->text(i)==filterName)
98 mSelectionCombo->setCurrentItem(i); 98 mSelectionCombo->setCurrentItem(i);
99 } 99 }
100 emit filterChanged(); 100 emit filterChanged();
101} 101}
102void KOFilterView::setSelectedFilter( int fil ) 102void KOFilterView::setSelectedFilter( int fil )
103{ 103{
104 if ( fil >= mSelectionCombo->count() ) 104 if ( fil >= mSelectionCombo->count() )
105 return; 105 return;
106 mSelectionCombo->setCurrentItem( fil ); 106 mSelectionCombo->setCurrentItem( fil );
107 emit filterChanged(); 107 emit filterChanged();
108} 108}
109 109
110 110
111 111
112KOCalEditView::KOCalEditView(QWidget* parent, 112KOCalEditView::KOCalEditView(QWidget* parent,
113 const char* name ) 113 const char* name )
114 : QScrollView(parent,name) 114 : QScrollView(parent,name)
115{ 115{
116 mw = 0; 116 mw = 0;
117 setResizePolicy( AutoOneFit ); 117 setResizePolicy( AutoOneFit );
118 setFrameStyle ( QFrame::Panel | QFrame::Plain ); 118 setFrameStyle ( QFrame::Panel | QFrame::Plain );
119 setLineWidth ( 1 ); 119 setLineWidth ( 1 );
120 setMidLineWidth ( 1 ); 120 setMidLineWidth ( 1 );
121 setFocusPolicy(NoFocus); 121 setFocusPolicy(NoFocus);
122} 122}
123 123
124KOCalEditView::~KOCalEditView() 124KOCalEditView::~KOCalEditView()
125{ 125{
126 // no need to delete child widgets, Qt does it all for us 126 // no need to delete child widgets, Qt does it all for us
127} 127}
128void KOCalEditView::selectCal(int id ,bool b) 128void KOCalEditView::selectCal(int id ,bool b)
129{ 129{
130 KOPrefs::instance()->getCalendar( id )->isEnabled = b; 130 KOPrefs::instance()->getCalendar( id )->isEnabled = b;
131 emit calendarEnabled ( id, b ); 131 emit calendarEnabled ( id, b );
132 emit needsUpdate(); 132 emit needsUpdate();
133 133
134} 134}
135void KOCalEditView::selectStdCal( int id, bool b ) 135void KOCalEditView::selectStdCal( int id, bool b )
136{ 136{
137 137
138 if ( !b ) { 138 if ( !b ) {
139 KOCalCheckButton* it = (KOCalCheckButton*) sender(); 139 KOCalCheckButton* it = (KOCalCheckButton*) sender();
140 if ( it ) { 140 if ( it ) {
141 it->blockSignals( true ); 141 it->blockSignals( true );
142 it->setChecked( true ); 142 it->setChecked( true );
143 it->blockSignals( false ); 143 it->blockSignals( false );
144 return; 144 return;
145 } 145 }
146 return; 146 return;
147 } 147 }
148 KOCalRadioButton* sen = (KOCalRadioButton*) sender(); 148 KOCalRadioButton* sen = (KOCalRadioButton*) sender();
149 KOCalRadioButton* it = mStdandardB.first(); 149 KOCalRadioButton* it = mStdandardB.first();
150 while ( it ) { 150 while ( it ) {
151 if ( it->isChecked() ) { 151 if ( it->isChecked() ) {
152 if ( it != sen ) { 152 if ( it != sen ) {
153 it->blockSignals( true ); 153 it->blockSignals( true );
154 it->setChecked( false ); 154 it->setChecked( false );
155 it->blockSignals( false ); 155 it->blockSignals( false );
156 break; 156 break;
157 } 157 }
158 } 158 }
159 it = mStdandardB.next(); 159 it = mStdandardB.next();
160 } 160 }
161 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 161 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
162 while ( kkf ) { 162 while ( kkf ) {
163 kkf->isStandard = false; 163 kkf->isStandard = false;
164 kkf = KOPrefs::instance()->mCalendars.next(); 164 kkf = KOPrefs::instance()->mCalendars.next();
165 } 165 }
166 KOPrefs::instance()->getCalendar( id )->isStandard = true; 166 KOPrefs::instance()->getCalendar( id )->isStandard = true;
167 emit setCalendarDefault ( id ); 167 emit setCalendarDefault ( id );
168} 168}
169 169
170void KOCalEditView::selectCalAlarm(int id ,bool b ) 170void KOCalEditView::selectCalAlarm(int id ,bool b )
171{ 171{
172 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b; 172 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b;
173 emit alarmEnabled ( id , b ); 173 emit alarmEnabled ( id , b );
174 emit needsUpdate(); 174 emit needsUpdate();
175} 175}
176void KOCalEditView::selectReadOnly(int id ,bool b ) 176void KOCalEditView::selectReadOnly(int id ,bool b )
177{ 177{
178 KOPrefs::instance()->getCalendar( id )->isReadOnly = b; 178 KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
179 emit calendarReadonly ( id , b ); 179 emit calendarReadonly ( id , b );
180 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b && id > 1 ) { 180 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b && id > 1 ) {
181 KOPrefs::instance()->getCalendar( id )->isStandard = false; 181 KOPrefs::instance()->getCalendar( id )->isStandard = false;
182 KOPrefs::instance()->getCalendar( 1 )->isStandard = true; 182 KOPrefs::instance()->getCalendar( 1 )->isStandard = true;
183 mStdandardB.at(0)->setChecked( true ); 183 mStdandardB.at(0)->setChecked( true );
184 mStdandardB.at(id-1)->setChecked( false ); 184 mStdandardB.at(id-1)->setChecked( false );
185 emit setCalendarDefault ( 1 ); 185 emit setCalendarDefault ( 1 );
186 } 186 }
187 mStdandardB.at(id-1)->setEnabled( !b ); 187 mStdandardB.at(id-1)->setEnabled( !b );
188 emit needsUpdate(); 188 emit needsUpdate();
189 189
190} 190}
191void KOCalEditView::setColor( const QColor& c, int id ) 191void KOCalEditView::setColor( const QColor& c, int id )
192{ 192{
193 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; 193 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
194 emit needsUpdate(); 194 emit needsUpdate();
195} 195}
196void KOCalEditView::deleteCal( int id ) 196void KOCalEditView::deleteCal( int id )
197{ 197{
198 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); 198 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
199 QString name = kkf->mName; 199 QString name = kkf->mName;
200 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 ); 200 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
201 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; 201 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
202 if ( kkf->isStandard ) 202 if ( kkf->isStandard )
203 selectStdCal( 1, true ); 203 selectStdCal( 1, true );
204 emit removeCalendar ( id ); 204 emit removeCalendar ( id );
205 KOPrefs::instance()->mCalendars.remove ( kkf ); 205 KOPrefs::instance()->mCalendars.remove ( kkf );
206 emit needsUpdate(); 206 emit needsUpdate();
207 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 207 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
208} 208}
209void KOCalEditView::infoCal( int id ) 209void KOCalEditView::infoCal( int id )
210{ 210{
211 QString name = KOPrefs::instance()->getCalendar( id )->mName; 211 QString name = KOPrefs::instance()->getCalendar( id )->mName;
212 QString file = KGlobal::formatMessage ( KOPrefs::instance()->getCalendar( id )->mFileName, 0 ); 212 QString file = KGlobal::formatMessage ( KOPrefs::instance()->getCalendar( id )->mFileName, 0 );
213 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) { 213 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) {
214 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) { 214 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) {
215 emit calendarAdded( id ); 215 emit calendarAdded( id );
216 emit needsUpdate(); 216 emit needsUpdate();
217 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 217 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
218 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) );
218 } 219 }
219 } 220 }
220 else 221 else
221 KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) ); 222 KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) );
222} 223}
223void KOCalEditView::readConfig() 224void KOCalEditView::readConfig()
224{ 225{
225 226
226 mStdandardB.clear(); 227 mStdandardB.clear();
227 mEnabledB.clear(); 228 mEnabledB.clear();
228 mAlarmB.clear(); 229 mAlarmB.clear();
229 mROB.clear(); 230 mROB.clear();
230 231
231 if ( mw ) delete mw; 232 if ( mw ) delete mw;
232 mw = new QWidget ( viewport() ); 233 mw = new QWidget ( viewport() );
233 addChild(mw); 234 addChild(mw);
234 int ii = 0; 235 int ii = 0;
235 mainLayout = new QGridLayout ( mw , 2, 8 ); 236 mainLayout = new QGridLayout ( mw , 2, 8 );
236 mainLayout->setMargin( 2 ); 237 mainLayout->setMargin( 2 );
237 mainLayout->setSpacing( 2 ); 238 mainLayout->setSpacing( 2 );
238 QPushButton * addBut = new QPushButton ( mw ); 239 QPushButton * addBut = new QPushButton ( mw );
239 addBut->setFocusPolicy(NoFocus); 240 addBut->setFocusPolicy(NoFocus);
240 mainLayout->addWidget( addBut,0,0 ); 241 mainLayout->addWidget( addBut,0,0 );
241 addBut->setText( "D"); 242 addBut->setText( "D");
242 connect(addBut,SIGNAL(clicked()),SLOT(defaultInfo())); 243 connect(addBut,SIGNAL(clicked()),SLOT(defaultInfo()));
243 //addBut->setPixmap ( SmallIcon("greenhook16")); 244 //addBut->setPixmap ( SmallIcon("greenhook16"));
244 addBut->setMaximumWidth( addBut->sizeHint().height() ); 245 addBut->setMaximumWidth( addBut->sizeHint().height() );
245 int max = addBut->sizeHint().height(); 246 int max = addBut->sizeHint().height();
246 addBut = new QPushButton ( mw ); 247 addBut = new QPushButton ( mw );
247 addBut->setFocusPolicy(NoFocus); 248 addBut->setFocusPolicy(NoFocus);
248 mainLayout->addWidget( addBut,0,++ii ); 249 mainLayout->addWidget( addBut,0,++ii );
249 addBut->setPixmap ( SmallIcon("eye")); 250 addBut->setPixmap ( SmallIcon("eye"));
250 connect(addBut,SIGNAL(clicked()),SLOT(enableAll())); 251 connect(addBut,SIGNAL(clicked()),SLOT(enableAll()));
251 addBut->setMaximumWidth( addBut->sizeHint().height() ); 252 addBut->setMaximumWidth( addBut->sizeHint().height() );
252 253
253 QLabel* lab = new QLabel (i18n(" Calendar \n Resource "), mw ); 254 QLabel* lab = new QLabel (i18n(" Calendar \n Resource "), mw );
254 mainLayout->addWidget( lab,0,++ii ); 255 mainLayout->addWidget( lab,0,++ii );
255 //lab = new QLabel ( i18n(" "), mw ); 256 //lab = new QLabel ( i18n(" "), mw );
256 //mainLayout->addWidget( lab,0,++ii ); 257 //mainLayout->addWidget( lab,0,++ii );
257 //lab->setFixedWidth( 1 ); 258 //lab->setFixedWidth( 1 );
258 addBut = new QPushButton ( mw ); 259 addBut = new QPushButton ( mw );
259 addBut->setFocusPolicy(NoFocus); 260 addBut->setFocusPolicy(NoFocus);
260 mainLayout->addWidget( addBut,0,++ii ); 261 mainLayout->addWidget( addBut,0,++ii );
261 addBut->setPixmap ( SmallIcon("bell")); 262 addBut->setPixmap ( SmallIcon("bell"));
262 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm())); 263 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm()));
263 addBut->setMaximumWidth( addBut->sizeHint().height() ); 264 addBut->setMaximumWidth( addBut->sizeHint().height() );
264 265
265 addBut = new QPushButton ( mw ); 266 addBut = new QPushButton ( mw );
266 addBut->setFocusPolicy(NoFocus); 267 addBut->setFocusPolicy(NoFocus);
267 mainLayout->addWidget( addBut,0,++ii ); 268 mainLayout->addWidget( addBut,0,++ii );
268 addBut->setPixmap ( SmallIcon("pencil")); 269 addBut->setPixmap ( SmallIcon("pencil"));
269 connect(addBut,SIGNAL(clicked()),SLOT(disableRO())); 270 connect(addBut,SIGNAL(clicked()),SLOT(disableRO()));
270 addBut->setMaximumWidth( addBut->sizeHint().height() ); 271 addBut->setMaximumWidth( addBut->sizeHint().height() );
271 lab = new QLabel ( "", mw ); 272 lab = new QLabel ( "", mw );
272 mainLayout->addWidget( lab,0,++ii ); 273 mainLayout->addWidget( lab,0,++ii );
273 274
274 addBut = new QPushButton ( mw ); 275 addBut = new QPushButton ( mw );
275 addBut->setFocusPolicy(NoFocus); 276 addBut->setFocusPolicy(NoFocus);
276 mainLayout->addWidget( addBut,0,++ii ); 277 mainLayout->addWidget( addBut,0,++ii );
277 addBut->setPixmap ( SmallIcon("plus")); 278 addBut->setPixmap ( SmallIcon("plus"));
278 connect(addBut,SIGNAL(clicked()),SLOT(addCal())); 279 connect(addBut,SIGNAL(clicked()),SLOT(addCal()));
279 280
280 lab = new QLabel ( " ", mw ); 281 lab = new QLabel ( " ", mw );
281 mainLayout->addWidget( lab,0,++ii ); 282 mainLayout->addWidget( lab,0,++ii );
282 283
283 284
284 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 285 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
285 int row = 1; 286 int row = 1;
286 while ( kkf ) { 287 while ( kkf ) {
287 int iii = 0; 288 int iii = 0;
288 KOCalRadioButton* rb = new KOCalRadioButton( mw ); 289 KOCalRadioButton* rb = new KOCalRadioButton( mw );
289 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb ); 290 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb );
290 rb->setChecked( kkf->isStandard ); 291 rb->setChecked( kkf->isStandard );
291 rb->setNum( kkf->mCalNumber ); 292 rb->setNum( kkf->mCalNumber );
292 connect (rb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) ); 293 connect (rb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) );
293 if ( kkf->mErrorOnLoad || kkf->isReadOnly ) 294 if ( kkf->mErrorOnLoad || kkf->isReadOnly )
294 rb->setEnabled( false ); 295 rb->setEnabled( false );
295 KOCalCheckButton* cb = new KOCalCheckButton( mw ); 296 KOCalCheckButton* cb = new KOCalCheckButton( mw );
296 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb ); 297 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb );
297 cb->setChecked( kkf->isEnabled ); 298 cb->setChecked( kkf->isEnabled );
298 cb->setNum( kkf->mCalNumber ); 299 cb->setNum( kkf->mCalNumber );
299 if ( kkf->mErrorOnLoad ) 300 if ( kkf->mErrorOnLoad )
300 cb->setEnabled( false ); 301 cb->setEnabled( false );
301 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) ); 302 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) );
302 KOCalButton* name = new KOCalButton( mw ); 303 KOCalButton* name = new KOCalButton( mw );
303 name->setNum( kkf->mCalNumber ); 304 name->setNum( kkf->mCalNumber );
304 name->setText( kkf->mName ); 305 name->setText( kkf->mName );
305 mainLayout->addWidget( name,row,++iii ); 306 mainLayout->addWidget( name,row,++iii );
306 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) ); 307 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) );
307 //lab = new QLabel (" ", mw ); 308 //lab = new QLabel (" ", mw );
308 //mainLayout->addWidget( lab,row,++iii ); 309 //mainLayout->addWidget( lab,row,++iii );
309 cb = new KOCalCheckButton( mw ); 310 cb = new KOCalCheckButton( mw );
310 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb ); 311 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb );
311 cb->setChecked( kkf->isAlarmEnabled ); 312 cb->setChecked( kkf->isAlarmEnabled );
312 cb->setNum( kkf->mCalNumber ); 313 cb->setNum( kkf->mCalNumber );
313 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) ); 314 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
314 if ( kkf->mErrorOnLoad ) 315 if ( kkf->mErrorOnLoad )
315 cb->setEnabled( false ); 316 cb->setEnabled( false );
316 cb = new KOCalCheckButton( mw ); 317 cb = new KOCalCheckButton( mw );
317 mainLayout->addWidget( cb,row,++iii );mROB.append( cb ); 318 mainLayout->addWidget( cb,row,++iii );mROB.append( cb );
318 cb->setChecked( kkf->isReadOnly ); 319 cb->setChecked( kkf->isReadOnly );
319 cb->setNum( kkf->mCalNumber ); 320 cb->setNum( kkf->mCalNumber );
320 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) ); 321 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) );
321 if ( kkf->mErrorOnLoad ) 322 if ( kkf->mErrorOnLoad )
322 cb->setEnabled( false ); 323 cb->setEnabled( false );
323 if ( row > 1) { 324 if ( row > 1) {
324 KColorButton *colb = new KColorButton( mw ); 325 KColorButton *colb = new KColorButton( mw );
325 mainLayout->addWidget( colb,row,++iii ); 326 mainLayout->addWidget( colb,row,++iii );
326 colb->setID( kkf->mCalNumber ); 327 colb->setID( kkf->mCalNumber );
327 colb->setColor( kkf->mDefaultColor ); 328 colb->setColor( kkf->mDefaultColor );
328 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) ); 329 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) );
329 KOCalButton* calb = new KOCalButton( mw ); 330 KOCalButton* calb = new KOCalButton( mw );
330 mainLayout->addWidget( calb,row,++iii ); 331 mainLayout->addWidget( calb,row,++iii );
331 calb->setNum( kkf->mCalNumber ); 332 calb->setNum( kkf->mCalNumber );
332 calb->setPixmap ( SmallIcon("minus")); 333 calb->setPixmap ( SmallIcon("minus"));
333 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) ); 334 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) );
334 int hei = calb->sizeHint().height(); 335 int hei = calb->sizeHint().height();
335 //calb->setMaximumSize( hei*9/10, hei*9/10 ); 336 //calb->setMaximumSize( hei*9/10, hei*9/10 );
336 } 337 }
337 ++row; 338 ++row;
338 kkf = KOPrefs::instance()->mCalendars.next(); 339 kkf = KOPrefs::instance()->mCalendars.next();
339 } 340 }
340 lab = new QLabel ( "", mw ); 341 lab = new QLabel ( "", mw );
341 mainLayout->addWidget( lab,row,0 ); 342 mainLayout->addWidget( lab,row,0 );
342 mw->show(); 343 mw->show();
343 344
344} 345}
345 346
346 347
347void KOCalEditView::defaultInfo() 348void KOCalEditView::defaultInfo()
348{ 349{
349 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") ); 350 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") );
350} 351}
351void KOCalEditView::addCal() 352void KOCalEditView::addCal()
352{ 353{
353 bool tryagain = true; 354 bool tryagain = true;
354 QString name, file; 355 QString name, file;
355 while ( tryagain ) { 356 while ( tryagain ) {
356 KONewCalPrefs prefs ( this ); 357 KONewCalPrefs prefs ( this );
357 prefs.nameE->setText( name ); 358 prefs.nameE->setText( name );
358 prefs.url->setURL( file ); 359 prefs.url->setURL( file );
359 if ( ! prefs.exec() ) 360 if ( ! prefs.exec() )
360 return; 361 return;
361 name = prefs.calName(); 362 name = prefs.calName();
362 file = prefs.calFileName(); 363 file = prefs.calFileName();
363 tryagain = false; 364 tryagain = false;
364 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 365 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
365 while ( kkf ) { 366 while ( kkf ) {
366 if ( kkf->mName == name ) { 367 if ( kkf->mName == name ) {
367 KMessageBox::information( this, i18n("Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!").arg( name ) ); 368 KMessageBox::information( this, i18n("Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!").arg( name ) );
368 name = ""; 369 name = "";
369 tryagain = true; 370 tryagain = true;
370 break; 371 break;
371 } 372 }
372 if ( kkf->mFileName == file ) { 373 if ( kkf->mFileName == file ) {
373 KMessageBox::information( this, i18n("Sorry, the file \n%1\nis already loaded!\nPlease choose another file!").arg( KGlobal::formatMessage (file, 0 )) ); 374 KMessageBox::information( this, i18n("Sorry, the file \n%1\nis already loaded!\nPlease choose another file!").arg( KGlobal::formatMessage (file, 0 )) );
374 tryagain = true; 375 tryagain = true;
375 file = ""; 376 file = "";
376 break; 377 break;
377 } 378 }
378 kkf = KOPrefs::instance()->mCalendars.next(); 379 kkf = KOPrefs::instance()->mCalendars.next();
379 } 380 }
380 } 381 }
381 addCalendar ( name, file ); 382 addCalendar ( name, file );
383 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) );
382} 384}
383int KOCalEditView::addCalendar( QString name, QString file, bool ask ) 385int KOCalEditView::addCalendar( QString name, QString file, bool ask )
384{ 386{
385 387
386 QFileInfo fi ( file ); 388 QFileInfo fi ( file );
387 if (!fi.exists() ) { 389 if (!fi.exists() ) {
388 if ( ask ) 390 if ( ask )
389 if ( KMessageBox::questionYesNo(this, i18n("The file\n%1\ndoes not exist!\nShall I create it for you?").arg( file ) )== KMessageBox::No ) 391 if ( KMessageBox::questionYesNo(this, i18n("The file\n%1\ndoes not exist!\nShall I create it for you?").arg( file ) )== KMessageBox::No )
390 return 0; 392 return 0;
391 QFile fileIn( file ); 393 QFile fileIn( file );
392 if (!fileIn.open( IO_WriteOnly ) ) { 394 if (!fileIn.open( IO_WriteOnly ) ) {
393 KMessageBox::sorry( this, i18n("Sorry, cannot create the file\n%1!\nNo calendar added!").arg( file ) ); 395 KMessageBox::sorry( this, i18n("Sorry, cannot create the file\n%1!\nNo calendar added!").arg( file ) );
394 return 0; 396 return 0;
395 } 397 }
396 QTextStream tsIn( &fileIn ); 398 QTextStream tsIn( &fileIn );
397 tsIn.setCodec( QTextCodec::codecForName("utf8") ); 399 tsIn.setCodec( QTextCodec::codecForName("utf8") );
398 tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n"; 400 tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n";
399 fileIn.close(); 401 fileIn.close();
400 } 402 }
401 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar(); 403 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar();
402 kkf->mName = name; 404 kkf->mName = name;
403 kkf->mFileName = file; 405 kkf->mFileName = file;
404 emit calendarAdded( kkf->mCalNumber ); 406 emit calendarAdded( kkf->mCalNumber );
405 if ( ask ) 407 if ( ask )
406 emit needsUpdate(); 408 emit needsUpdate();
407 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 409 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
408 return kkf->mCalNumber; 410 return kkf->mCalNumber;
409} 411}
410int KOCalEditView::getBirtdayID() 412int KOCalEditView::getBirtdayID()
411{ 413{
412 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 414 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
413 while ( kkf ) { 415 while ( kkf ) {
414 if ( kkf->mName == i18n("Birthdays") ) 416 if ( kkf->mName == i18n("Birthdays") )
415 return kkf->mCalNumber; 417 return kkf->mCalNumber;
416 kkf = KOPrefs::instance()->mCalendars.next(); 418 kkf = KOPrefs::instance()->mCalendars.next();
417 } 419 }
418 QString file = locateLocal( "data", "korganizer/birthdays.ics" ); 420 QString file = locateLocal( "data", "korganizer/birthdays.ics" );
419 return addCalendar( i18n("Birthdays"), file, false ); 421 return addCalendar( i18n("Birthdays"), file, false );
420} 422}
421 423
422void KOCalEditView::enableAll() 424void KOCalEditView::enableAll()
423{ 425{
424 toggleList( mEnabledB ); 426 toggleList( mEnabledB );
425} 427}
426void KOCalEditView::enableAlarm() 428void KOCalEditView::enableAlarm()
427{ 429{
428 toggleList( mAlarmB ); 430 toggleList( mAlarmB );
429} 431}
430void KOCalEditView::disableRO() 432void KOCalEditView::disableRO()
431{ 433{
432 toggleList( mROB ); 434 toggleList( mROB );
433} 435}
434void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list ) 436void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list )
435{ 437{
436 bool dis = false; 438 bool dis = false;
437 KOCalCheckButton* it = list.first(); 439 KOCalCheckButton* it = list.first();
438 while ( it ) { 440 while ( it ) {
439 if ( !it->isChecked() ) { 441 if ( !it->isChecked() ) {
440 dis = true; 442 dis = true;
441 break; 443 break;
442 } 444 }
443 it = list.next(); 445 it = list.next();
444 } 446 }
445 it = list.first(); 447 it = list.first();
446 while ( it ) { 448 while ( it ) {
447 it->setChecked(dis); 449 it->setChecked(dis);
448 it = list.next(); 450 it = list.next();
449 } 451 }
450} 452}
451void KOCalEditView::deleteAll() 453void KOCalEditView::deleteAll()
452{ 454{
453 qDebug("delteAll"); 455 qDebug("delteAll");
454} 456}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 54fe2c5..02107cf 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -1,249 +1,250 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qradiobutton.h> 28#include <qradiobutton.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qlabel.h> 30#include <qlabel.h>
31#include <qdialog.h> 31#include <qdialog.h>
32#include <qscrollview.h> 32#include <qscrollview.h>
33#include <qpushbutton.h> 33#include <qpushbutton.h>
34#include <kconfig.h> 34#include <kconfig.h>
35#include "kofilterview_base.h" 35#include "kofilterview_base.h"
36 36
37#include <libkcal/calfilter.h> 37#include <libkcal/calfilter.h>
38 38
39#include <kurlrequester.h> 39#include <kurlrequester.h>
40#include <klineedit.h> 40#include <klineedit.h>
41#include <kglobal.h> 41#include <kglobal.h>
42#include <kmessagebox.h> 42#include <kmessagebox.h>
43 43
44class QGridLayout; 44class QGridLayout;
45 45
46using namespace KCal; 46using namespace KCal;
47 47
48class KONewCalPrefs : public QDialog 48class KONewCalPrefs : public QDialog
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 public: 51 public:
52 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) : 52 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
53 QDialog( parent, name, true ) 53 QDialog( parent, name, true )
54 { 54 {
55 setCaption( i18n("Add new Calendar") ); 55 setCaption( i18n("Add new Calendar") );
56 QVBoxLayout* lay = new QVBoxLayout( this ); 56 QVBoxLayout* lay = new QVBoxLayout( this );
57 lay->setSpacing( 3 ); 57 lay->setSpacing( 3 );
58 lay->setMargin( 3 ); 58 lay->setMargin( 3 );
59 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this ); 59 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
60 lay->addWidget( lab ); 60 lay->addWidget( lab );
61 nameE = new KLineEdit( this ); 61 nameE = new KLineEdit( this );
62 lay->addWidget( nameE ); 62 lay->addWidget( nameE );
63 lab = new QLabel( i18n("<b>Local ical (*.ics) file:</b>"), this ); 63 lab = new QLabel( i18n("<b>Local ical (*.ics) file:</b>"), this );
64 lay->addWidget( lab ); 64 lay->addWidget( lab );
65 url = new KURLRequester ( this ); 65 url = new KURLRequester ( this );
66 lay->addWidget( url ); 66 lay->addWidget( url );
67 QPushButton * ok = new QPushButton( i18n("OK"), this ); 67 QPushButton * ok = new QPushButton( i18n("OK"), this );
68 lay->addWidget( ok ); 68 lay->addWidget( ok );
69 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 69 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
70 lay->addWidget( cancel ); 70 lay->addWidget( cancel );
71 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) ); 71 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
72 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 72 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
73 setMinimumWidth( 220 ); 73 setMinimumWidth( 220 );
74 resize(sizeHint() ); 74 resize(sizeHint() );
75 } 75 }
76 76
77 QString calName() { return nameE->text(); } 77 QString calName() { return nameE->text(); }
78 QString calFileName() { return url->url(); } 78 QString calFileName() { return url->url(); }
79 79
80public slots: 80public slots:
81void checkValid() { 81void checkValid() {
82 if ( nameE->text().isEmpty() ) { 82 if ( nameE->text().isEmpty() ) {
83 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") ); 83 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") );
84 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () )); 84 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () ));
85 return; 85 return;
86 } 86 }
87 if ( url->url().isEmpty() ) { 87 if ( url->url().isEmpty() ) {
88 KMessageBox::information( this, i18n("Sorry, the file name is empty!") ); 88 KMessageBox::information( this, i18n("Sorry, the file name is empty!") );
89 return; 89 return;
90 } 90 }
91 accept(); 91 accept();
92} 92}
93 93
94public: 94public:
95 KLineEdit* nameE; 95 KLineEdit* nameE;
96 KURLRequester *url; 96 KURLRequester *url;
97}; 97};
98 98
99class KOCalButton : public QPushButton 99class KOCalButton : public QPushButton
100{ 100{
101 Q_OBJECT 101 Q_OBJECT
102 public: 102 public:
103 KOCalButton( QWidget *parent=0, const char *name=0 ) : 103 KOCalButton( QWidget *parent=0, const char *name=0 ) :
104 QPushButton( parent, name) 104 QPushButton( parent, name)
105 { 105 {
106 connect( this, SIGNAL( clicked() ), 106 connect( this, SIGNAL( clicked() ),
107 SLOT( bottonClicked() )); 107 SLOT( bottonClicked() ));
108 mNumber = -1; 108 mNumber = -1;
109 setFocusPolicy(NoFocus); 109 setFocusPolicy(NoFocus);
110 } 110 }
111 void setNum ( int num ) {mNumber = num; } 111 void setNum ( int num ) {mNumber = num; }
112 signals: 112 signals:
113 void selectNum ( int ); 113 void selectNum ( int );
114private: 114private:
115 int mNumber; 115 int mNumber;
116 void keyPressEvent ( QKeyEvent * e ) 116 void keyPressEvent ( QKeyEvent * e )
117 { 117 {
118 e->ignore(); 118 e->ignore();
119 } 119 }
120 120
121private slots : 121private slots :
122 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); } 122 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
123}; 123};
124class KOCalCheckButton : public QCheckBox 124class KOCalCheckButton : public QCheckBox
125{ 125{
126 Q_OBJECT 126 Q_OBJECT
127 public: 127 public:
128 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) : 128 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
129 QCheckBox( parent, name) 129 QCheckBox( parent, name)
130 { 130 {
131 connect( this, SIGNAL( toggled ( bool ) ), 131 connect( this, SIGNAL( toggled ( bool ) ),
132 SLOT( bottonClicked( bool ) )); 132 SLOT( bottonClicked( bool ) ));
133 mNumber = -1; 133 mNumber = -1;
134 setFocusPolicy(NoFocus); 134 setFocusPolicy(NoFocus);
135 //setMaximumWidth( 10 ); 135 //setMaximumWidth( 10 );
136 136
137 } 137 }
138 void setNum ( int num ) {mNumber = num; } 138 void setNum ( int num ) {mNumber = num; }
139 signals: 139 signals:
140 void selectNum ( int, bool ); 140 void selectNum ( int, bool );
141private: 141private:
142 int mNumber; 142 int mNumber;
143 void keyPressEvent ( QKeyEvent * e ) 143 void keyPressEvent ( QKeyEvent * e )
144 { 144 {
145 e->ignore(); 145 e->ignore();
146 } 146 }
147 147
148private slots : 148private slots :
149 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 149 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
150}; 150};
151 151
152class KOCalRadioButton : public QRadioButton 152class KOCalRadioButton : public QRadioButton
153{ 153{
154 Q_OBJECT 154 Q_OBJECT
155 public: 155 public:
156 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) : 156 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) :
157 QRadioButton( parent, name) 157 QRadioButton( parent, name)
158 { 158 {
159 connect( this, SIGNAL( toggled ( bool ) ), 159 connect( this, SIGNAL( toggled ( bool ) ),
160 SLOT( bottonClicked( bool ) )); 160 SLOT( bottonClicked( bool ) ));
161 mNumber = -1; 161 mNumber = -1;
162 setFocusPolicy(NoFocus); 162 setFocusPolicy(NoFocus);
163 //setMaximumWidth( 10 ); 163 //setMaximumWidth( 10 );
164 164
165 } 165 }
166 void setNum ( int num ) {mNumber = num; } 166 void setNum ( int num ) {mNumber = num; }
167 signals: 167 signals:
168 void selectNum ( int, bool ); 168 void selectNum ( int, bool );
169private: 169private:
170 int mNumber; 170 int mNumber;
171 void keyPressEvent ( QKeyEvent * e ) 171 void keyPressEvent ( QKeyEvent * e )
172 { 172 {
173 e->ignore(); 173 e->ignore();
174 } 174 }
175 175
176private slots : 176private slots :
177 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 177 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
178}; 178};
179 179
180 180
181 181
182class KOFilterView : public KOFilterView_base 182class KOFilterView : public KOFilterView_base
183{ 183{
184 Q_OBJECT 184 Q_OBJECT
185 public: 185 public:
186 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); 186 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
187 ~KOFilterView(); 187 ~KOFilterView();
188 188
189 void updateFilters(); 189 void updateFilters();
190 190
191 bool filtersEnabled(); 191 bool filtersEnabled();
192 void setFiltersEnabled(bool); 192 void setFiltersEnabled(bool);
193 CalFilter *selectedFilter(); 193 CalFilter *selectedFilter();
194 void setSelectedFilter(QString); 194 void setSelectedFilter(QString);
195 void setSelectedFilter( int ); 195 void setSelectedFilter( int );
196 196
197 signals: 197 signals:
198 void filterChanged(); 198 void filterChanged();
199 void editFilters(); 199 void editFilters();
200 200
201 private: 201 private:
202 QPtrList<CalFilter> *mFilters; 202 QPtrList<CalFilter> *mFilters;
203}; 203};
204 204
205class KOCalEditView : public QScrollView 205class KOCalEditView : public QScrollView
206{ 206{
207 Q_OBJECT 207 Q_OBJECT
208 public: 208 public:
209 KOCalEditView( QWidget* parent=0,const char* name=0); 209 KOCalEditView( QWidget* parent=0,const char* name=0);
210 ~KOCalEditView(); 210 ~KOCalEditView();
211 int addCalendar( QString calName, QString fileName, bool ask = true ); 211 int addCalendar( QString calName, QString fileName, bool ask = true );
212 int getBirtdayID(); 212 int getBirtdayID();
213 public slots: 213 public slots:
214 void addCal(); 214 void addCal();
215 void enableAll(); 215 void enableAll();
216 void enableAlarm(); 216 void enableAlarm();
217 void disableRO(); 217 void disableRO();
218 void deleteAll(); 218 void deleteAll();
219 void selectStdCal(int,bool ); 219 void selectStdCal(int,bool );
220 void selectCal(int,bool ); 220 void selectCal(int,bool );
221 void selectCalAlarm(int,bool ); 221 void selectCalAlarm(int,bool );
222 void selectReadOnly(int,bool ); 222 void selectReadOnly(int,bool );
223 void setColor(const QColor &,int) ; 223 void setColor(const QColor &,int) ;
224 void deleteCal(int) ; 224 void deleteCal(int) ;
225 void infoCal(int) ; 225 void infoCal(int) ;
226 void readConfig(); 226 void readConfig();
227 void defaultInfo(); 227 void defaultInfo();
228 signals: 228 signals:
229 void alarmEnabled ( int cal, bool enable ); 229 void alarmEnabled ( int cal, bool enable );
230 void calendarEnabled ( int cal, bool enable ); 230 void calendarEnabled ( int cal, bool enable );
231 void calendarReadonly ( int cal, bool readonly ); 231 void calendarReadonly ( int cal, bool readonly );
232 void setCalendarDefault ( int cal ); 232 void setCalendarDefault ( int cal );
233 void removeCalendar ( int cal ); 233 void removeCalendar ( int cal );
234 void calendarAdded( int ); 234 void calendarAdded( int );
235 void needsUpdate(); 235 void needsUpdate();
236 void checkCalendar();
236 237
237 private: 238 private:
238 QWidget *mw; 239 QWidget *mw;
239 void toggleList ( QPtrList<KOCalCheckButton> ); 240 void toggleList ( QPtrList<KOCalCheckButton> );
240 QPtrList<KOCalRadioButton> mStdandardB; 241 QPtrList<KOCalRadioButton> mStdandardB;
241 QPtrList<KOCalCheckButton> mEnabledB; 242 QPtrList<KOCalCheckButton> mEnabledB;
242 QPtrList<KOCalCheckButton> mAlarmB; 243 QPtrList<KOCalCheckButton> mAlarmB;
243 QPtrList<KOCalCheckButton> mROB; 244 QPtrList<KOCalCheckButton> mROB;
244 QGridLayout* mainLayout; 245 QGridLayout* mainLayout;
245}; 246};
246 247
247 248
248 249
249#endif // KOFILTERVIEW_H 250#endif // KOFILTERVIEW_H
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index b797d8c..501eed5 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,1173 +1,1170 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "kojournalview.h" 50#include "kojournalview.h"
51#include "koagenda.h" 51#include "koagenda.h"
52#include "kodialogmanager.h" 52#include "kodialogmanager.h"
53#include "kdialogbase.h" 53#include "kdialogbase.h"
54#include "kapplication.h" 54#include "kapplication.h"
55#include "kofilterview.h" 55#include "kofilterview.h"
56#include "kstandarddirs.h" 56#include "kstandarddirs.h"
57#include "koprefs.h" 57#include "koprefs.h"
58#include "kfiledialog.h" 58#include "kfiledialog.h"
59#include "koglobals.h" 59#include "koglobals.h"
60#include "kglobal.h" 60#include "kglobal.h"
61#include "ktoolbar.h" 61#include "ktoolbar.h"
62#include "klocale.h" 62#include "klocale.h"
63#include "kconfig.h" 63#include "kconfig.h"
64#include "externalapphandler.h" 64#include "externalapphandler.h"
65#include <kglobalsettings.h> 65#include <kglobalsettings.h>
66 66
67using namespace KCal; 67using namespace KCal;
68#ifndef _WIN32_ 68#ifndef _WIN32_
69#include <unistd.h> 69#include <unistd.h>
70#else 70#else
71#ifdef _OL_IMPORT_ 71#ifdef _OL_IMPORT_
72#include "koimportoldialog.h" 72#include "koimportoldialog.h"
73#endif 73#endif
74#endif 74#endif
75#include "mainwindow.h" 75#include "mainwindow.h"
76 76
77 77
78class KOex2phonePrefs : public QDialog 78class KOex2phonePrefs : public QDialog
79{ 79{
80 public: 80 public:
81 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 81 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
82 QDialog( parent, name, true ) 82 QDialog( parent, name, true )
83 { 83 {
84 setCaption( i18n("Export to phone options") ); 84 setCaption( i18n("Export to phone options") );
85 QVBoxLayout* lay = new QVBoxLayout( this ); 85 QVBoxLayout* lay = new QVBoxLayout( this );
86 lay->setSpacing( 3 ); 86 lay->setSpacing( 3 );
87 lay->setMargin( 3 ); 87 lay->setMargin( 3 );
88 QLabel *lab; 88 QLabel *lab;
89 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 89 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
90 lab->setAlignment (AlignHCenter ); 90 lab->setAlignment (AlignHCenter );
91 QHBox* temphb; 91 QHBox* temphb;
92 temphb = new QHBox( this ); 92 temphb = new QHBox( this );
93 new QLabel( i18n("I/O device: "), temphb ); 93 new QLabel( i18n("I/O device: "), temphb );
94 mPhoneDevice = new QLineEdit( temphb); 94 mPhoneDevice = new QLineEdit( temphb);
95 lay->addWidget( temphb ); 95 lay->addWidget( temphb );
96 temphb = new QHBox( this ); 96 temphb = new QHBox( this );
97 new QLabel( i18n("Connection: "), temphb ); 97 new QLabel( i18n("Connection: "), temphb );
98 mPhoneConnection = new QLineEdit( temphb); 98 mPhoneConnection = new QLineEdit( temphb);
99 lay->addWidget( temphb ); 99 lay->addWidget( temphb );
100 temphb = new QHBox( this ); 100 temphb = new QHBox( this );
101 new QLabel( i18n("Model(opt.): "), temphb ); 101 new QLabel( i18n("Model(opt.): "), temphb );
102 mPhoneModel = new QLineEdit( temphb); 102 mPhoneModel = new QLineEdit( temphb);
103 lay->addWidget( temphb ); 103 lay->addWidget( temphb );
104 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 104 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
105 mWriteBackFuture->setChecked( true ); 105 mWriteBackFuture->setChecked( true );
106 lay->addWidget( mWriteBackFuture ); 106 lay->addWidget( mWriteBackFuture );
107 temphb = new QHBox( this ); 107 temphb = new QHBox( this );
108 new QLabel( i18n("Max. weeks in future: ") , temphb ); 108 new QLabel( i18n("Max. weeks in future: ") , temphb );
109 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 109 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
110 mWriteBackFutureWeeks->setValue( 8 ); 110 mWriteBackFutureWeeks->setValue( 8 );
111 lay->addWidget( temphb ); 111 lay->addWidget( temphb );
112 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 112 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
113 lab->setAlignment (AlignHCenter ); 113 lab->setAlignment (AlignHCenter );
114 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 114 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
115 lay->addWidget( ok ); 115 lay->addWidget( ok );
116 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 116 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
117 lay->addWidget( cancel ); 117 lay->addWidget( cancel );
118 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 118 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
119 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 119 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
120 resize( 220, 240 ); 120 resize( 220, 240 );
121 qApp->processEvents(); 121 qApp->processEvents();
122 int dw = QApplication::desktop()->width(); 122 int dw = QApplication::desktop()->width();
123 int dh = QApplication::desktop()->height(); 123 int dh = QApplication::desktop()->height();
124 move( (dw-width())/2, (dh - height() )/2 ); 124 move( (dw-width())/2, (dh - height() )/2 );
125 } 125 }
126 126
127public: 127public:
128 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 128 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
129 QCheckBox* mWriteBackFuture; 129 QCheckBox* mWriteBackFuture;
130 QSpinBox* mWriteBackFutureWeeks; 130 QSpinBox* mWriteBackFutureWeeks;
131}; 131};
132 132
133QPixmap* sgListViewCompletedPix[6]; 133QPixmap* sgListViewCompletedPix[6];
134 134
135 135
136int globalFlagBlockStartup; 136int globalFlagBlockStartup;
137MainWindow::MainWindow( QWidget *parent, const char *name ) : 137MainWindow::MainWindow( QWidget *parent, const char *name ) :
138 QMainWindow( parent, name ) 138 QMainWindow( parent, name )
139{ 139{
140 sgListViewCompletedPix[5] = &listviewPix; 140 sgListViewCompletedPix[5] = &listviewPix;
141 sgListViewCompletedPix[0] = &listviewPix0; 141 sgListViewCompletedPix[0] = &listviewPix0;
142 sgListViewCompletedPix[1] = &listviewPix20; 142 sgListViewCompletedPix[1] = &listviewPix20;
143 sgListViewCompletedPix[2] = &listviewPix40; 143 sgListViewCompletedPix[2] = &listviewPix40;
144 sgListViewCompletedPix[3] = &listviewPix60; 144 sgListViewCompletedPix[3] = &listviewPix60;
145 sgListViewCompletedPix[4] = &listviewPix80; 145 sgListViewCompletedPix[4] = &listviewPix80;
146 if ( sgListViewCompletedPix[5]->height() < 5 ) { 146 if ( sgListViewCompletedPix[5]->height() < 5 ) {
147 //int size = 12; 147 //int size = 12;
148 sgListViewCompletedPix[5]->resize( 11, 11 ); 148 sgListViewCompletedPix[5]->resize( 11, 11 );
149 sgListViewCompletedPix[5]->fill( Qt::white ); 149 sgListViewCompletedPix[5]->fill( Qt::white );
150 QPainter p ( sgListViewCompletedPix[5] ); 150 QPainter p ( sgListViewCompletedPix[5] );
151 p.drawRect( 0,0,11,11); 151 p.drawRect( 0,0,11,11);
152 p.drawLine ( 2, 5, 4 , 7 ) ; 152 p.drawLine ( 2, 5, 4 , 7 ) ;
153 p.drawLine ( 4 , 7 , 8, 3) ; 153 p.drawLine ( 4 , 7 , 8, 3) ;
154 int iii = 0; 154 int iii = 0;
155 for ( iii = 0; iii < 5; ++iii ) { 155 for ( iii = 0; iii < 5; ++iii ) {
156 sgListViewCompletedPix[iii]->resize( 11, 11 ); 156 sgListViewCompletedPix[iii]->resize( 11, 11 );
157 sgListViewCompletedPix[iii]->fill( Qt::white ); 157 sgListViewCompletedPix[iii]->fill( Qt::white );
158 QPainter p ( sgListViewCompletedPix[iii] ); 158 QPainter p ( sgListViewCompletedPix[iii] );
159 p.drawRect( 0,0,11,11); 159 p.drawRect( 0,0,11,11);
160 if ( iii ) 160 if ( iii )
161 p.fillRect( 1,1,iii*2,9,Qt::gray ); 161 p.fillRect( 1,1,iii*2,9,Qt::gray );
162 } 162 }
163 } 163 }
164 mClosed = false; 164 mClosed = false;
165 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 165 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
166 QString confFile = locateLocal("config","korganizerrc"); 166 QString confFile = locateLocal("config","korganizerrc");
167 QFileInfo finf ( confFile ); 167 QFileInfo finf ( confFile );
168 bool showWarning = !finf.exists(); 168 bool showWarning = !finf.exists();
169 setIcon(SmallIcon( "ko24" ) ); 169 setIcon(SmallIcon( "ko24" ) );
170 mBlockAtStartup = true; 170 mBlockAtStartup = true;
171 mFlagKeyPressed = false; 171 mFlagKeyPressed = false;
172 setCaption("KO/Pi"); 172 setCaption("KO/Pi");
173 KOPrefs *p = KOPrefs::instance(); 173 KOPrefs *p = KOPrefs::instance();
174 //KPimGlobalPrefs::instance()->setGlobalConfig(); 174 //KPimGlobalPrefs::instance()->setGlobalConfig();
175 p->mCurrentDisplayedView = 0; 175 p->mCurrentDisplayedView = 0;
176 if ( p->mHourSize > 22 ) 176 if ( p->mHourSize > 22 )
177 p->mHourSize = 22; 177 p->mHourSize = 22;
178 QMainWindow::ToolBarDock tbd; 178 QMainWindow::ToolBarDock tbd;
179 if ( p->mToolBarHor ) { 179 if ( p->mToolBarHor ) {
180 if ( p->mToolBarUp ) 180 if ( p->mToolBarUp )
181 tbd = Bottom; 181 tbd = Bottom;
182 else 182 else
183 tbd = Top; 183 tbd = Top;
184 } 184 }
185 else { 185 else {
186 if ( p->mToolBarUp ) 186 if ( p->mToolBarUp )
187 tbd = Right; 187 tbd = Right;
188 else 188 else
189 tbd = Left; 189 tbd = Left;
190 } 190 }
191 if ( KOPrefs::instance()->mUseAppColors ) 191 if ( KOPrefs::instance()->mUseAppColors )
192 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 192 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
193 globalFlagBlockStartup = 1; 193 globalFlagBlockStartup = 1;
194 iconToolBar = new QPEToolBar( this ); 194 iconToolBar = new QPEToolBar( this );
195 addToolBar (iconToolBar , tbd ); 195 addToolBar (iconToolBar , tbd );
196 196
197#ifdef DESKTOP_VERSION 197#ifdef DESKTOP_VERSION
198 if ( KOPrefs::instance()->mShowIconFilter ) 198 if ( KOPrefs::instance()->mShowIconFilter )
199#else 199#else
200 if ( KOPrefs::instance()->mShowIconFilter || !p->mShowIconOnetoolbar ) 200 if ( KOPrefs::instance()->mShowIconFilter || !p->mShowIconOnetoolbar )
201#endif 201#endif
202 202
203{ 203{
204 if ( p->mToolBarHorF ) { 204 if ( p->mToolBarHorF ) {
205 if ( p->mToolBarUpF ) 205 if ( p->mToolBarUpF )
206 tbd = Bottom; 206 tbd = Bottom;
207 else 207 else
208 tbd = Top; 208 tbd = Top;
209 } 209 }
210 else { 210 else {
211 if ( p->mToolBarUpF ) 211 if ( p->mToolBarUpF )
212 tbd = Right; 212 tbd = Right;
213 else 213 else
214 tbd = Left; 214 tbd = Left;
215 } 215 }
216 filterToolBar = new QPEToolBar ( this ); 216 filterToolBar = new QPEToolBar ( this );
217 filterMenubar = new QMenuBar( 0 ); 217 filterMenubar = new QMenuBar( 0 );
218 QFontMetrics fm ( filterMenubar->font() ); 218 QFontMetrics fm ( filterMenubar->font() );
219 219
220 filterPopupMenu = new QPopupMenu( this ); 220 filterPopupMenu = new QPopupMenu( this );
221 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 ); 221 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 );
222 QString addTest = "A"; 222 QString addTest = "A";
223 filterMenubar->setMinimumWidth( fm.width( i18n("No Filter")+addTest ) ); 223 filterMenubar->setMinimumWidth( fm.width( i18n("No Filter")+addTest ) );
224#ifdef DESKTOP_VERSION 224#ifdef DESKTOP_VERSION
225 addTest = "AAABBBCCCx"; 225 addTest = "AAABBBCCCx";
226#else 226#else
227 addTest = "AAx"; 227 addTest = "AAx";
228#endif 228#endif
229 filterMenubar->setMaximumWidth( fm.width( i18n("No Filter")+addTest ) ); 229 filterMenubar->setMaximumWidth( fm.width( i18n("No Filter")+addTest ) );
230 addToolBar (filterToolBar , tbd ); 230 addToolBar (filterToolBar , tbd );
231 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) ); 231 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) );
232 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) ); 232 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) );
233 if ( !KOPrefs::instance()->mShowIconFilter && !p->mShowIconOnetoolbar ) 233 if ( !KOPrefs::instance()->mShowIconFilter && !p->mShowIconOnetoolbar )
234 filterToolBar->hide(); 234 filterToolBar->hide();
235 } else { 235 } else {
236 filterToolBar = 0; 236 filterToolBar = 0;
237 filterMenubar = 0; 237 filterMenubar = 0;
238 filterPopupMenu = 0; 238 filterPopupMenu = 0;
239 } 239 }
240 if ( p->mShowIconOnetoolbar ) { 240 if ( p->mShowIconOnetoolbar ) {
241 viewToolBar = iconToolBar ; 241 viewToolBar = iconToolBar ;
242 navigatorToolBar = iconToolBar ; 242 navigatorToolBar = iconToolBar ;
243 } else { 243 } else {
244#ifndef DESKTOP_VERSION 244#ifndef DESKTOP_VERSION
245 setToolBarsMovable( false ); 245 setToolBarsMovable( false );
246#endif 246#endif
247 if ( p->mToolBarHorV ) { 247 if ( p->mToolBarHorV ) {
248 if ( p->mToolBarUpV ) 248 if ( p->mToolBarUpV )
249 tbd = Bottom; 249 tbd = Bottom;
250 else 250 else
251 tbd = Top; 251 tbd = Top;
252 } 252 }
253 else { 253 else {
254 if ( p->mToolBarUpV ) 254 if ( p->mToolBarUpV )
255 tbd = Right; 255 tbd = Right;
256 else 256 else
257 tbd = Left; 257 tbd = Left;
258 } 258 }
259 viewToolBar = new QPEToolBar( this ); 259 viewToolBar = new QPEToolBar( this );
260 addToolBar (viewToolBar , tbd ); 260 addToolBar (viewToolBar , tbd );
261 if ( p->mToolBarHorN ) { 261 if ( p->mToolBarHorN ) {
262 if ( p->mToolBarUpN ) 262 if ( p->mToolBarUpN )
263 tbd = Bottom; 263 tbd = Bottom;
264 else 264 else
265 tbd = Top; 265 tbd = Top;
266 } 266 }
267 else { 267 else {
268 if ( p->mToolBarUpN ) 268 if ( p->mToolBarUpN )
269 tbd = Right; 269 tbd = Right;
270 else 270 else
271 tbd = Left; 271 tbd = Left;
272 } 272 }
273 navigatorToolBar = new QPEToolBar( this ); 273 navigatorToolBar = new QPEToolBar( this );
274 addToolBar (navigatorToolBar , tbd ); 274 addToolBar (navigatorToolBar , tbd );
275 } 275 }
276 276
277 277
278 278
279 mCalendarModifiedFlag = false; 279 mCalendarModifiedFlag = false;
280 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 280 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
281 splash->setAlignment ( AlignCenter ); 281 splash->setAlignment ( AlignCenter );
282 setCentralWidget( splash ); 282 setCentralWidget( splash );
283#ifndef DESKTOP_VERSION 283#ifndef DESKTOP_VERSION
284 showMaximized(); 284 showMaximized();
285#endif 285#endif
286 286
287 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 287 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
288 setDefaultPreferences(); 288 setDefaultPreferences();
289 mCalendar = new CalendarLocal(); 289 mCalendar = new CalendarLocal();
290 mView = new CalendarView( mCalendar, this,"mCalendar " ); 290 mView = new CalendarView( mCalendar, this,"mCalendar " );
291 mView->hide(); 291 mView->hide();
292 //mView->resize(splash->size() ); 292 //mView->resize(splash->size() );
293 initActions(); 293 initActions();
294 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 294 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
295 mSyncManager->setBlockSave(false); 295 mSyncManager->setBlockSave(false);
296 mView->setSyncManager(mSyncManager); 296 mView->setSyncManager(mSyncManager);
297#ifndef DESKTOP_VERSION 297#ifndef DESKTOP_VERSION
298 iconToolBar->show(); 298 iconToolBar->show();
299 qApp->processEvents(); 299 qApp->processEvents();
300#endif 300#endif
301 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 301 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
302 int vh = height() ; 302 int vh = height() ;
303 int vw = width(); 303 int vw = width();
304 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 304 //qDebug("Toolbar hei %d ",iconToolBar->height() );
305 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 305 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
306 vh -= iconToolBar->height(); 306 vh -= iconToolBar->height();
307 } else { 307 } else {
308 vw -= iconToolBar->height(); 308 vw -= iconToolBar->height();
309 } 309 }
310 //mView->setMaximumSize( splash->size() ); 310 //mView->setMaximumSize( splash->size() );
311 //mView->resize( splash->size() ); 311 //mView->resize( splash->size() );
312 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 312 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
313 mView->readSettings(); 313 mView->readSettings();
314 bool newFile = false; 314 bool newFile = false;
315 if( !QFile::exists( defaultFileName() ) ) { 315 if( !QFile::exists( defaultFileName() ) ) {
316 QFileInfo finfo ( defaultFileName() ); 316 QFileInfo finfo ( defaultFileName() );
317 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 317 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
318 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 318 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
319 finfo.setFile( oldFile ); 319 finfo.setFile( oldFile );
320 if (finfo.exists() ) { 320 if (finfo.exists() ) {
321 KMessageBox::information( this, message); 321 KMessageBox::information( this, message);
322 mView->openCalendar( oldFile ); 322 mView->openCalendar( oldFile );
323 qApp->processEvents(); 323 qApp->processEvents();
324 } else { 324 } else {
325 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 325 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
326 finfo.setFile( oldFile ); 326 finfo.setFile( oldFile );
327 if (finfo.exists() ) { 327 if (finfo.exists() ) {
328 KMessageBox::information( this, message); 328 KMessageBox::information( this, message);
329 mView->openCalendar( oldFile ); 329 mView->openCalendar( oldFile );
330 qApp->processEvents(); 330 qApp->processEvents();
331 } 331 }
332 } 332 }
333 mView->saveCalendar( defaultFileName() ); 333 mView->saveCalendar( defaultFileName() );
334 newFile = true; 334 newFile = true;
335 } 335 }
336 336
337 QTime neededSaveTime = QDateTime::currentDateTime().time(); 337 QTime neededSaveTime = QDateTime::currentDateTime().time();
338 mView->loadCalendars(); 338 mView->loadCalendars();
339 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 339 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
340 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 340 qDebug("KO: Calendar loading time: %d ms",msNeeded );
341 341
342 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) { 342 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) {
343 KOPrefs::instance()->setAllDefaults(); 343 KOPrefs::instance()->setAllDefaults();
344 } 344 }
345 processIncidenceSelection( 0 ); 345 processIncidenceSelection( 0 );
346 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 346 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
347 SLOT( processIncidenceSelection( Incidence * ) ) ); 347 SLOT( processIncidenceSelection( Incidence * ) ) );
348 connect( mView, SIGNAL( modifiedChanged( bool ) ), 348 connect( mView, SIGNAL( modifiedChanged( bool ) ),
349 SLOT( slotModifiedChanged( bool ) ) ); 349 SLOT( slotModifiedChanged( bool ) ) );
350 350
351 351
352 connect( mView, SIGNAL( tempDisableBR(bool) ), 352 connect( mView, SIGNAL( tempDisableBR(bool) ),
353 SLOT( disableBR(bool) ) ); 353 SLOT( disableBR(bool) ) );
354 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 354 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
355 mView->setModified( false ); 355 mView->setModified( false );
356 mBlockAtStartup = false; 356 mBlockAtStartup = false;
357 mView->setModified( false ); 357 mView->setModified( false );
358 setCentralWidget( mView ); 358 setCentralWidget( mView );
359 globalFlagBlockStartup = 0; 359 globalFlagBlockStartup = 0;
360 mView->show(); 360 mView->show();
361 delete splash; 361 delete splash;
362 if ( newFile ) 362 if ( newFile )
363 mView->updateConfig(); 363 mView->updateConfig();
364 // qApp->processEvents(); 364 // qApp->processEvents();
365 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 365 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
366 //fillSyncMenu(); 366 //fillSyncMenu();
367 367
368 368
369 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 369 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
370 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 370 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
371 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) ); 371 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) );
372 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 372 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
373 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 373 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
374 mSyncManager->setDefaultFileName( sentSyncFile()); 374 mSyncManager->setDefaultFileName( sentSyncFile());
375 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 375 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
376 mSyncManager->fillSyncMenu(); 376 mSyncManager->fillSyncMenu();
377 377
378 378
379 379
380 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 380 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
381 if ( showWarning ) { 381 if ( showWarning ) {
382 KMessageBox::information( this, 382 KMessageBox::information( this,
383 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 383 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
384 qApp->processEvents(); 384 qApp->processEvents();
385 mView->dialogManager()->showSyncOptions(); 385 mView->dialogManager()->showSyncOptions();
386 } 386 }
387 387
388 //US listen for result adressed from Ka/Pi 388 //US listen for result adressed from Ka/Pi
389#ifndef DESKTOP_VERSION 389#ifndef DESKTOP_VERSION
390 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 390 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
391#endif 391#endif
392#ifndef DESKTOP_VERSION 392#ifndef DESKTOP_VERSION
393 infrared = 0; 393 infrared = 0;
394#endif 394#endif
395 updateFilterToolbar(); 395 updateFilterToolbar();
396 updateWeek( mView->startDate() ); 396 updateWeek( mView->startDate() );
397 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 397 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
398 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 398 SLOT( updateWeekNum( const KCal::DateList & ) ) );
399 mBRdisabled = false; 399 mBRdisabled = false;
400 //toggleBeamReceive(); 400 //toggleBeamReceive();
401 int tiint= 3000; 401
402#ifndef DESKTOP_VERSION 402 QTimer::singleShot( 1000, mView, SLOT ( checkFiles() ));
403 tiint = 5000;
404#endif
405 QTimer::singleShot( tiint, mView, SLOT ( checkAlarms() ));
406} 403}
407MainWindow::~MainWindow() 404MainWindow::~MainWindow()
408{ 405{
409 //qDebug("MainWindow::~MainWindow() "); 406 //qDebug("MainWindow::~MainWindow() ");
410 //save toolbar location 407 //save toolbar location
411 delete mCalendar; 408 delete mCalendar;
412 delete mSyncManager; 409 delete mSyncManager;
413#ifndef DESKTOP_VERSION 410#ifndef DESKTOP_VERSION
414 if ( infrared ) 411 if ( infrared )
415 delete infrared; 412 delete infrared;
416#endif 413#endif
417 414
418 415
419} 416}
420 417
421void MainWindow::disableBR(bool b) 418void MainWindow::disableBR(bool b)
422{ 419{
423#ifndef DESKTOP_VERSION 420#ifndef DESKTOP_VERSION
424 if ( b ) { 421 if ( b ) {
425 if ( infrared ) { 422 if ( infrared ) {
426 toggleBeamReceive(); 423 toggleBeamReceive();
427 mBRdisabled = true; 424 mBRdisabled = true;
428 } 425 }
429 mBRdisabled = true; 426 mBRdisabled = true;
430 } else { 427 } else {
431 if ( mBRdisabled ) { 428 if ( mBRdisabled ) {
432 mBRdisabled = false; 429 mBRdisabled = false;
433 //makes no sense,because other cal ap is probably running 430 //makes no sense,because other cal ap is probably running
434 // toggleBeamReceive(); 431 // toggleBeamReceive();
435 } 432 }
436 } 433 }
437#endif 434#endif
438 435
439} 436}
440bool MainWindow::beamReceiveEnabled() 437bool MainWindow::beamReceiveEnabled()
441{ 438{
442#ifndef DESKTOP_VERSION 439#ifndef DESKTOP_VERSION
443 return ( infrared != 0 ); 440 return ( infrared != 0 );
444#endif 441#endif
445 return false; 442 return false;
446} 443}
447 444
448void MainWindow::toggleBeamReceive() 445void MainWindow::toggleBeamReceive()
449{ 446{
450 if ( mBRdisabled ) 447 if ( mBRdisabled )
451 return; 448 return;
452#ifndef DESKTOP_VERSION 449#ifndef DESKTOP_VERSION
453 if ( infrared ) { 450 if ( infrared ) {
454 qDebug("KO: Disable BeamReceive "); 451 qDebug("KO: Disable BeamReceive ");
455 delete infrared; 452 delete infrared;
456 infrared = 0; 453 infrared = 0;
457 brAction->setOn(false); 454 brAction->setOn(false);
458 return; 455 return;
459 } 456 }
460 qDebug("KO: Enable BeamReceive "); 457 qDebug("KO: Enable BeamReceive ");
461 brAction->setOn(true); 458 brAction->setOn(true);
462 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 459 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
463 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 460 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
464#endif 461#endif
465} 462}
466void MainWindow::showMaximized () 463void MainWindow::showMaximized ()
467{ 464{
468#ifndef DESKTOP_VERSION 465#ifndef DESKTOP_VERSION
469 if ( ! globalFlagBlockStartup ) 466 if ( ! globalFlagBlockStartup )
470 if ( mClosed ) 467 if ( mClosed )
471 mView->goToday(); 468 mView->goToday();
472#endif 469#endif
473 QWidget::showMaximized () ; 470 QWidget::showMaximized () ;
474 mClosed = false; 471 mClosed = false;
475} 472}
476void MainWindow::closeEvent( QCloseEvent* ce ) 473void MainWindow::closeEvent( QCloseEvent* ce )
477{ 474{
478 475
479 476
480 477
481 if ( ! KOPrefs::instance()->mAskForQuit ) { 478 if ( ! KOPrefs::instance()->mAskForQuit ) {
482 saveOnClose(); 479 saveOnClose();
483 mClosed = true; 480 mClosed = true;
484 ce->accept(); 481 ce->accept();
485 return; 482 return;
486 483
487 } 484 }
488 485
489 switch( QMessageBox::information( this, "KO/Pi", 486 switch( QMessageBox::information( this, "KO/Pi",
490 i18n("Do you really want\nto close KO/Pi?"), 487 i18n("Do you really want\nto close KO/Pi?"),
491 i18n("Close"), i18n("No"), 488 i18n("Close"), i18n("No"),
492 0, 0 ) ) { 489 0, 0 ) ) {
493 case 0: 490 case 0:
494 saveOnClose(); 491 saveOnClose();
495 mClosed = true; 492 mClosed = true;
496 ce->accept(); 493 ce->accept();
497 break; 494 break;
498 case 1: 495 case 1:
499 ce->ignore(); 496 ce->ignore();
500 break; 497 break;
501 case 2: 498 case 2:
502 499
503 default: 500 default:
504 break; 501 break;
505 } 502 }
506 503
507 504
508} 505}
509 506
510void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 507void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
511{ 508{
512 QDataStream stream( data, IO_ReadOnly ); 509 QDataStream stream( data, IO_ReadOnly );
513 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 510 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
514 //QString datamess; 511 //QString datamess;
515 //qDebug("message "); 512 //qDebug("message ");
516 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 513 qDebug("KO: QCOP message received: %s ", cmsg.data() );
517 514
518 if ( cmsg == "setDocument(QString)" ) { 515 if ( cmsg == "setDocument(QString)" ) {
519 QDataStream stream( data, IO_ReadOnly ); 516 QDataStream stream( data, IO_ReadOnly );
520 QString fileName; 517 QString fileName;
521 stream >> fileName; 518 stream >> fileName;
522 //qDebug("filename %s ", fileName.latin1()); 519 //qDebug("filename %s ", fileName.latin1());
523 showMaximized(); 520 showMaximized();
524 raise(); 521 raise();
525 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 522 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
526 mSyncManager->slotSyncMenu( 1002 ); 523 mSyncManager->slotSyncMenu( 1002 );
527 return; 524 return;
528 } 525 }
529 526
530 if ( cmsg == "-writeFile" ) { 527 if ( cmsg == "-writeFile" ) {
531 // I made from the "-writeFile" an "-writeAlarm" 528 // I made from the "-writeFile" an "-writeAlarm"
532 mView->viewManager()->showWhatsNextView(); 529 mView->viewManager()->showWhatsNextView();
533 mCalendar->checkAlarmForIncidence( 0, true); 530 mCalendar->checkAlarmForIncidence( 0, true);
534 showMaximized(); 531 showMaximized();
535 raise(); 532 raise();
536 return; 533 return;
537 534
538 } 535 }
539 if ( cmsg == "-writeFileSilent" ) { 536 if ( cmsg == "-writeFileSilent" ) {
540 // I made from the "-writeFile" an "-writeAlarm" 537 // I made from the "-writeFile" an "-writeAlarm"
541 // mView->viewManager()->showWhatsNextView(); 538 // mView->viewManager()->showWhatsNextView();
542 mCalendar->checkAlarmForIncidence( 0, true); 539 mCalendar->checkAlarmForIncidence( 0, true);
543 //showMaximized(); 540 //showMaximized();
544 //raise(); 541 //raise();
545 hide(); 542 hide();
546 return; 543 return;
547 } 544 }
548 if ( cmsg == "-newCountdown" ) { 545 if ( cmsg == "-newCountdown" ) {
549 qDebug("newCountdown "); 546 qDebug("newCountdown ");
550 547
551 } 548 }
552 QString msg ; 549 QString msg ;
553 QString allmsg = cmsg; 550 QString allmsg = cmsg;
554 while ( allmsg.length() > 0 ) { 551 while ( allmsg.length() > 0 ) {
555 int nextC = allmsg.find( "-", 1 ); 552 int nextC = allmsg.find( "-", 1 );
556 if ( nextC == -1 ) { 553 if ( nextC == -1 ) {
557 msg = allmsg; 554 msg = allmsg;
558 allmsg = ""; 555 allmsg = "";
559 } else{ 556 } else{
560 msg = allmsg.left( nextC ); 557 msg = allmsg.left( nextC );
561 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 558 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
562 } 559 }
563 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 560 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
564 if ( msg == "-newEvent" ) { 561 if ( msg == "-newEvent" ) {
565 QTimer::singleShot( 0, mView, SLOT ( newEvent())); 562 QTimer::singleShot( 0, mView, SLOT ( newEvent()));
566 } 563 }
567 if ( msg == "-newTodo" ) { 564 if ( msg == "-newTodo" ) {
568 QTimer::singleShot( 0, mView, SLOT ( newTodo())); 565 QTimer::singleShot( 0, mView, SLOT ( newTodo()));
569 } 566 }
570 if ( msg == "-showWN" ) { 567 if ( msg == "-showWN" ) {
571 mView->viewManager()->showWhatsNextView(); 568 mView->viewManager()->showWhatsNextView();
572 } 569 }
573 if ( msg == "-showTodo" ) { 570 if ( msg == "-showTodo" ) {
574 mView->viewManager()->showTodoView(); 571 mView->viewManager()->showTodoView();
575 } 572 }
576 if ( msg == "-showList" ) { 573 if ( msg == "-showList" ) {
577 mView->viewManager()->showListView(); 574 mView->viewManager()->showListView();
578 } 575 }
579 else if ( msg == "-showDay" ) { 576 else if ( msg == "-showDay" ) {
580 mView->viewManager()->showDayView(); 577 mView->viewManager()->showDayView();
581 } 578 }
582 else if ( msg == "-showWWeek" ) { 579 else if ( msg == "-showWWeek" ) {
583 mView->viewManager()->showWorkWeekView(); 580 mView->viewManager()->showWorkWeekView();
584 } 581 }
585 else if ( msg == "-ringSync" ) { 582 else if ( msg == "-ringSync" ) {
586 QTimer::singleShot( 0, this, SLOT (startMultiSync())); 583 QTimer::singleShot( 0, this, SLOT (startMultiSync()));
587 } 584 }
588 else if ( msg == "-showWeek" ) { 585 else if ( msg == "-showWeek" ) {
589 mView->viewManager()->showWeekView(); 586 mView->viewManager()->showWeekView();
590 } 587 }
591 else if ( msg == "-showTodo" ) { 588 else if ( msg == "-showTodo" ) {
592 mView->viewManager()->showTodoView(); 589 mView->viewManager()->showTodoView();
593 } 590 }
594 else if ( msg == "-showJournal" ) { 591 else if ( msg == "-showJournal" ) {
595 mView->dateNavigator()->selectDates( 1 ); 592 mView->dateNavigator()->selectDates( 1 );
596 mView->dateNavigator()->selectToday(); 593 mView->dateNavigator()->selectToday();
597 mView->viewManager()->showJournalView(); 594 mView->viewManager()->showJournalView();
598 } 595 }
599 else if ( msg == "-showKO" ) { 596 else if ( msg == "-showKO" ) {
600 mView->viewManager()->showNextXView(); 597 mView->viewManager()->showNextXView();
601 } 598 }
602 else if ( msg == "-showWNext" ) { 599 else if ( msg == "-showWNext" ) {
603 mView->viewManager()->showWhatsNextView(); 600 mView->viewManager()->showWhatsNextView();
604 } 601 }
605 else if ( msg == "nextView()" ) { 602 else if ( msg == "nextView()" ) {
606 mView->viewManager()->showNextView(); 603 mView->viewManager()->showNextView();
607 } 604 }
608 else if ( msg == "-showNextXView" ) { 605 else if ( msg == "-showNextXView" ) {
609 mView->viewManager()->showNextXView(); 606 mView->viewManager()->showNextXView();
610 } 607 }
611 608
612 609
613 } 610 }
614 611
615 showMaximized(); 612 showMaximized();
616 raise(); 613 raise();
617} 614}
618void MainWindow::startMultiSync() 615void MainWindow::startMultiSync()
619{ 616{
620 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 617 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
621 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"), 618 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"),
622 question, 619 question,
623 i18n("Yes"), i18n("No"), 620 i18n("Yes"), i18n("No"),
624 0, 0 ) != 0 ) { 621 0, 0 ) != 0 ) {
625 setCaption(i18n("Aborted! Nothing synced!")); 622 setCaption(i18n("Aborted! Nothing synced!"));
626 return; 623 return;
627 } 624 }
628 mSyncManager->multiSync( false ); 625 mSyncManager->multiSync( false );
629#ifndef DESKTOP_VERSION 626#ifndef DESKTOP_VERSION
630 QCopEnvelope e("QPE/Application/kapi", "doRingSync"); 627 QCopEnvelope e("QPE/Application/kapi", "doRingSync");
631#endif 628#endif
632} 629}
633QPixmap MainWindow::loadPixmap( QString name ) 630QPixmap MainWindow::loadPixmap( QString name )
634{ 631{
635 return SmallIcon( name ); 632 return SmallIcon( name );
636 633
637} 634}
638void MainWindow::setUsesBigPixmaps ( bool b ) 635void MainWindow::setUsesBigPixmaps ( bool b )
639{ 636{
640 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b); 637 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b);
641 if ( b ) 638 if ( b )
642 qDebug("KO: BigPixmaps are not supported "); 639 qDebug("KO: BigPixmaps are not supported ");
643} 640}
644void MainWindow::initActions() 641void MainWindow::initActions()
645{ 642{
646 //KOPrefs::instance()->mShowFullMenu 643 //KOPrefs::instance()->mShowFullMenu
647 iconToolBar->clear(); 644 iconToolBar->clear();
648 KOPrefs *p = KOPrefs::instance(); 645 KOPrefs *p = KOPrefs::instance();
649 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 646 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
650 647
651 QPopupMenu *viewMenu = new QPopupMenu( this ); 648 QPopupMenu *viewMenu = new QPopupMenu( this );
652 QPopupMenu *actionMenu = new QPopupMenu( this ); 649 QPopupMenu *actionMenu = new QPopupMenu( this );
653 mCurrentItemMenu = new QPopupMenu ( this ); 650 mCurrentItemMenu = new QPopupMenu ( this );
654 QPopupMenu *importMenu = new QPopupMenu( this ); 651 QPopupMenu *importMenu = new QPopupMenu( this );
655 QPopupMenu *importMenu_X = new QPopupMenu( this ); 652 QPopupMenu *importMenu_X = new QPopupMenu( this );
656 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 653 QPopupMenu *exportMenu_X = new QPopupMenu( this );
657 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 654 QPopupMenu *beamMenu_X = new QPopupMenu( this );
658 selectFilterMenu = new QPopupMenu( this ); 655 selectFilterMenu = new QPopupMenu( this );
659 selectFilterMenu->setCheckable( true ); 656 selectFilterMenu->setCheckable( true );
660 syncMenu = new QPopupMenu( this ); 657 syncMenu = new QPopupMenu( this );
661 configureAgendaMenu = new QPopupMenu( this ); 658 configureAgendaMenu = new QPopupMenu( this );
662 configureToolBarMenu = new QPopupMenu( this ); 659 configureToolBarMenu = new QPopupMenu( this );
663 QPopupMenu *helpMenu = new QPopupMenu( this ); 660 QPopupMenu *helpMenu = new QPopupMenu( this );
664 QIconSet icon; 661 QIconSet icon;
665 int pixWid = 22, pixHei = 22; 662 int pixWid = 22, pixHei = 22;
666 QString pathString = ""; 663 QString pathString = "";
667 if ( !p->mToolBarMiniIcons ) { 664 if ( !p->mToolBarMiniIcons ) {
668 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) { 665 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) {
669 pathString += "icons16/"; 666 pathString += "icons16/";
670 pixWid = 18; pixHei = 16; 667 pixWid = 18; pixHei = 16;
671 } 668 }
672 } else { 669 } else {
673 pathString += "iconsmini/"; 670 pathString += "iconsmini/";
674 pixWid = 18; pixHei = 16; 671 pixWid = 18; pixHei = 16;
675 } 672 }
676 if ( KOPrefs::instance()->mShowFullMenu ) { 673 if ( KOPrefs::instance()->mShowFullMenu ) {
677 QMenuBar *menuBar1; 674 QMenuBar *menuBar1;
678 menuBar1 = menuBar(); 675 menuBar1 = menuBar();
679 menuBar1->insertItem( i18n("File"), importMenu ); 676 menuBar1->insertItem( i18n("File"), importMenu );
680 menuBar1->insertItem( i18n("View"), viewMenu ); 677 menuBar1->insertItem( i18n("View"), viewMenu );
681 menuBar1->insertItem( i18n("Actions"), actionMenu ); 678 menuBar1->insertItem( i18n("Actions"), actionMenu );
682#ifdef DESKTOP_VERSION 679#ifdef DESKTOP_VERSION
683 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 680 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
684 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 681 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
685#else 682#else
686 menuBar1->insertItem( i18n("Sync"), syncMenu ); 683 menuBar1->insertItem( i18n("Sync"), syncMenu );
687 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 684 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
688#endif 685#endif
689 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 686 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
690 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 687 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
691 menuBar1->insertItem( i18n("Help"), helpMenu ); 688 menuBar1->insertItem( i18n("Help"), helpMenu );
692 } else { 689 } else {
693 QPEMenuBar *menuBar1; 690 QPEMenuBar *menuBar1;
694 menuBar1 = new QPEMenuBar( iconToolBar ); 691 menuBar1 = new QPEMenuBar( iconToolBar );
695 QPopupMenu *menuBar = new QPopupMenu( this ); 692 QPopupMenu *menuBar = new QPopupMenu( this );
696 icon = loadPixmap( pathString + "z_menu" ); 693 icon = loadPixmap( pathString + "z_menu" );
697 menuBar1->insertItem( icon.pixmap(), menuBar); 694 menuBar1->insertItem( icon.pixmap(), menuBar);
698 //menuBar1->insertItem( i18n("ME"), menuBar); 695 //menuBar1->insertItem( i18n("ME"), menuBar);
699 menuBar->insertItem( i18n("File"), importMenu ); 696 menuBar->insertItem( i18n("File"), importMenu );
700 menuBar->insertItem( i18n("View"), viewMenu ); 697 menuBar->insertItem( i18n("View"), viewMenu );
701 menuBar->insertItem( i18n("Actions"), actionMenu ); 698 menuBar->insertItem( i18n("Actions"), actionMenu );
702 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 699 menuBar->insertItem( i18n("Synchronize"), syncMenu );
703 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 700 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
704 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 701 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
705 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 702 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
706 menuBar->insertItem( i18n("Help"), helpMenu ); 703 menuBar->insertItem( i18n("Help"), helpMenu );
707 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 704 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
708 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 705 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
709 } 706 }
710 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 707 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
711 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 708 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
712 709
713 710
714 mWeekBgColor = iconToolBar->backgroundColor(); 711 mWeekBgColor = iconToolBar->backgroundColor();
715 mWeekPixmap.resize( pixWid , pixHei ); 712 mWeekPixmap.resize( pixWid , pixHei );
716 mWeekPixmap.fill( mWeekBgColor ); 713 mWeekPixmap.fill( mWeekBgColor );
717 icon = mWeekPixmap; 714 icon = mWeekPixmap;
718 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 715 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
719 if ( p-> mShowIconWeekNum ) 716 if ( p-> mShowIconWeekNum )
720 mWeekAction->addTo( iconToolBar ); 717 mWeekAction->addTo( iconToolBar );
721 mWeekFont = font(); 718 mWeekFont = font();
722 719
723 int fontPoint = mWeekFont.pointSize(); 720 int fontPoint = mWeekFont.pointSize();
724 QFontMetrics f( mWeekFont ); 721 QFontMetrics f( mWeekFont );
725 int fontWid = f.width( "30" ); 722 int fontWid = f.width( "30" );
726 while ( fontWid > pixWid ) { 723 while ( fontWid > pixWid ) {
727 --fontPoint; 724 --fontPoint;
728 mWeekFont.setPointSize( fontPoint ); 725 mWeekFont.setPointSize( fontPoint );
729 QFontMetrics f( mWeekFont ); 726 QFontMetrics f( mWeekFont );
730 fontWid = f.width( "30" ); 727 fontWid = f.width( "30" );
731 //qDebug("dec-- "); 728 //qDebug("dec-- ");
732 } 729 }
733 730
734 connect( mWeekAction, SIGNAL( activated() ), 731 connect( mWeekAction, SIGNAL( activated() ),
735 this, SLOT( weekAction() ) ); 732 this, SLOT( weekAction() ) );
736 733
737 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 734 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
738 if ( p->mShowIconFilterview ) { 735 if ( p->mShowIconFilterview ) {
739 icon = loadPixmap( pathString + "filter" ); 736 icon = loadPixmap( pathString + "filter" );
740 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this ); 737 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this );
741 connect( actionFilterMenuTB, SIGNAL( activated() ), 738 connect( actionFilterMenuTB, SIGNAL( activated() ),
742 this, SLOT( fillFilterMenuTB() ) ); 739 this, SLOT( fillFilterMenuTB() ) );
743 actionFilterMenuTB->addTo( iconToolBar ); 740 actionFilterMenuTB->addTo( iconToolBar );
744 selectFilterMenuTB = new QPopupMenu( this ); 741 selectFilterMenuTB = new QPopupMenu( this );
745 selectFilterMenuTB->setCheckable( true ); 742 selectFilterMenuTB->setCheckable( true );
746 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 743 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
747 } 744 }
748 745
749 //#endif 746 //#endif
750 // ****************** 747 // ******************
751 QAction *action; 748 QAction *action;
752 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 749 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
753 configureToolBarMenu->setCheckable( true ); 750 configureToolBarMenu->setCheckable( true );
754 751
755 752
756 configureAgendaMenu->setCheckable( true ); 753 configureAgendaMenu->setCheckable( true );
757 int iii ; 754 int iii ;
758 for ( iii = 1;iii<= 10 ;++iii ){ 755 for ( iii = 1;iii<= 10 ;++iii ){
759 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 756 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
760 } 757 }
761 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 758 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
762 759
763 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 760 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
764 this, SLOT( showConfigureAgenda( ) ) ); 761 this, SLOT( showConfigureAgenda( ) ) );
765 icon = loadPixmap( pathString + "today" ); 762 icon = loadPixmap( pathString + "today" );
766 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 763 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
767 today_action->addTo( actionMenu ); 764 today_action->addTo( actionMenu );
768 connect( today_action, SIGNAL( activated() ), 765 connect( today_action, SIGNAL( activated() ),
769 mView, SLOT( goToday() ) ); 766 mView, SLOT( goToday() ) );
770 767
771 icon = loadPixmap( pathString + "picker" ); 768 icon = loadPixmap( pathString + "picker" );
772 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this ); 769 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this );
773 dPickerAction->addTo( actionMenu ); 770 dPickerAction->addTo( actionMenu );
774 connect( dPickerAction, SIGNAL( activated() ), 771 connect( dPickerAction, SIGNAL( activated() ),
775 mView, SLOT( showDatePicker() ) ); 772 mView, SLOT( showDatePicker() ) );
776 773
777 icon = loadPixmap( pathString + "search" ); 774 icon = loadPixmap( pathString + "search" );
778 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 775 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
779 search_action->addTo( actionMenu ); 776 search_action->addTo( actionMenu );
780 connect( search_action, SIGNAL( activated() ), 777 connect( search_action, SIGNAL( activated() ),
781 mView->dialogManager(), SLOT( showSearchDialog() ) ); 778 mView->dialogManager(), SLOT( showSearchDialog() ) );
782 779
783 actionMenu->insertSeparator(); 780 actionMenu->insertSeparator();
784 781
785 782
786 783
787 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); 784 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
788 action->addTo( actionMenu ); 785 action->addTo( actionMenu );
789 connect( action, SIGNAL( activated() ), 786 connect( action, SIGNAL( activated() ),
790 mView, SLOT( undo_delete() ) ); 787 mView, SLOT( undo_delete() ) );
791 788
792 icon = loadPixmap( pathString + "newevent" ); 789 icon = loadPixmap( pathString + "newevent" );
793 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 790 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
794 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); 791 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 );
795 configureToolBarMenu->insertSeparator(); 792 configureToolBarMenu->insertSeparator();
796 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 ); 793 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 );
797 configureToolBarMenu->insertSeparator(); 794 configureToolBarMenu->insertSeparator();
798 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 795 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
799 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 796 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
800 797
801 actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu); 798 actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu);
802 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 799 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
803 mShowAction->addTo( mCurrentItemMenu ); 800 mShowAction->addTo( mCurrentItemMenu );
804 connect( mShowAction, SIGNAL( activated() ), 801 connect( mShowAction, SIGNAL( activated() ),
805 mView, SLOT( showIncidence() ) ); 802 mView, SLOT( showIncidence() ) );
806 803
807 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 804 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
808 mEditAction->addTo( mCurrentItemMenu ); 805 mEditAction->addTo( mCurrentItemMenu );
809 connect( mEditAction, SIGNAL( activated() ), 806 connect( mEditAction, SIGNAL( activated() ),
810 mView, SLOT( editIncidence() ) ); 807 mView, SLOT( editIncidence() ) );
811 808
812 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 809 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
813 mDeleteAction->addTo( mCurrentItemMenu ); 810 mDeleteAction->addTo( mCurrentItemMenu );
814 connect( mDeleteAction, SIGNAL( activated() ), 811 connect( mDeleteAction, SIGNAL( activated() ),
815 mView, SLOT( deleteIncidence() ) ); 812 mView, SLOT( deleteIncidence() ) );
816 813
817 814
818 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 815 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
819 mCloneAction->addTo( mCurrentItemMenu ); 816 mCloneAction->addTo( mCurrentItemMenu );
820 connect( mCloneAction, SIGNAL( activated() ), 817 connect( mCloneAction, SIGNAL( activated() ),
821 mView, SLOT( cloneIncidence() ) ); 818 mView, SLOT( cloneIncidence() ) );
822 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 819 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
823 mMoveAction->addTo( mCurrentItemMenu ); 820 mMoveAction->addTo( mCurrentItemMenu );
824 connect( mMoveAction, SIGNAL( activated() ), 821 connect( mMoveAction, SIGNAL( activated() ),
825 mView, SLOT( moveIncidence() ) ); 822 mView, SLOT( moveIncidence() ) );
826 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 823 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
827 mBeamAction->addTo(mCurrentItemMenu ); 824 mBeamAction->addTo(mCurrentItemMenu );
828 connect( mBeamAction, SIGNAL( activated() ), 825 connect( mBeamAction, SIGNAL( activated() ),
829 mView, SLOT( beamIncidence() ) ); 826 mView, SLOT( beamIncidence() ) );
830 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 827 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
831 mCancelAction->addTo( mCurrentItemMenu ); 828 mCancelAction->addTo( mCurrentItemMenu );
832 connect( mCancelAction, SIGNAL( activated() ), 829 connect( mCancelAction, SIGNAL( activated() ),
833 mView, SLOT( toggleCancelIncidence() ) ); 830 mView, SLOT( toggleCancelIncidence() ) );
834#ifdef DESKTOP_VERSION 831#ifdef DESKTOP_VERSION
835 actionMenu->insertSeparator(); 832 actionMenu->insertSeparator();
836#endif 833#endif
837 834
838 835
839 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 836 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
840 ne_action->addTo( actionMenu ); 837 ne_action->addTo( actionMenu );
841 connect( ne_action, SIGNAL( activated() ), 838 connect( ne_action, SIGNAL( activated() ),
842 mView, SLOT( newEvent() ) ); 839 mView, SLOT( newEvent() ) );
843 icon = loadPixmap( pathString + "newtodo" ); 840 icon = loadPixmap( pathString + "newtodo" );
844 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 841 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
845 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 842 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
846 nt_action->addTo( actionMenu ); 843 nt_action->addTo( actionMenu );
847 connect( nt_action, SIGNAL( activated() ), 844 connect( nt_action, SIGNAL( activated() ),
848 mView, SLOT( newTodo() ) ); 845 mView, SLOT( newTodo() ) );
849 846
850 847
851 848
852 // *********************** 849 // ***********************
853 if ( KOPrefs::instance()->mVerticalScreen ) { 850 if ( KOPrefs::instance()->mVerticalScreen ) {
854 icon = SmallIcon( "1updownarrow" ); 851 icon = SmallIcon( "1updownarrow" );
855 } else { 852 } else {
856 icon = SmallIcon("1leftrightarrow" ); 853 icon = SmallIcon("1leftrightarrow" );
857 } 854 }
858 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 ); 855 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 );
859 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this ); 856 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this );
860 FSaction->addTo( viewMenu ); 857 FSaction->addTo( viewMenu );
861 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() )); 858 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() ));
862 859
863 860
864 icon = loadPixmap( pathString + "filter" ); 861 icon = loadPixmap( pathString + "filter" );
865 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 ); 862 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 );
866 icon = loadPixmap( pathString + "configure" ); 863 icon = loadPixmap( pathString + "configure" );
867 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this ); 864 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this );
868 action->addTo( viewMenu ); 865 action->addTo( viewMenu );
869 connect( action, SIGNAL( activated() ), 866 connect( action, SIGNAL( activated() ),
870 mView, SLOT( toggleFilter() ) ); 867 mView, SLOT( toggleFilter() ) );
871 mToggleFilter = action; 868 mToggleFilter = action;
872 icon = loadPixmap( pathString + "navi" ); 869 icon = loadPixmap( pathString + "navi" );
873 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 ); 870 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 );
874 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 871 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
875 action->addTo( viewMenu ); 872 action->addTo( viewMenu );
876 connect( action, SIGNAL( activated() ), 873 connect( action, SIGNAL( activated() ),
877 mView, SLOT( toggleDateNavigatorWidget() ) ); 874 mView, SLOT( toggleDateNavigatorWidget() ) );
878 mToggleNav = action ; 875 mToggleNav = action ;
879 icon = loadPixmap( pathString + "allday" ); 876 icon = loadPixmap( pathString + "allday" );
880 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 ); 877 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 );
881 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 878 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
882 action->addTo( viewMenu ); 879 action->addTo( viewMenu );
883 connect( action, SIGNAL( activated() ), 880 connect( action, SIGNAL( activated() ),
884 mView, SLOT( toggleAllDaySize() ) ); 881 mView, SLOT( toggleAllDaySize() ) );
885 mToggleAllday = action; 882 mToggleAllday = action;
886 883
887 884
888 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 885 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
889 mToggleNav, SLOT( setEnabled ( bool ) ) ); 886 mToggleNav, SLOT( setEnabled ( bool ) ) );
890 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 887 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
891 // mToggleFilter, SLOT( setEnabled ( bool ) ) ); 888 // mToggleFilter, SLOT( setEnabled ( bool ) ) );
892 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 889 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
893 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 890 mToggleAllday, SLOT( setEnabled ( bool ) ) );
894 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 891 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
895 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) ); 892 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) );
896 893
897 894
898 dPickerAction->addTo( iconToolBar ); 895 dPickerAction->addTo( iconToolBar );
899 viewMenu->insertSeparator(); 896 viewMenu->insertSeparator();
900 897
901 if ( p-> mShowIconToggleFull ) 898 if ( p-> mShowIconToggleFull )
902 FSaction->addTo( iconToolBar ); 899 FSaction->addTo( iconToolBar );
903 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar ); 900 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar );
904 901
905 //******************** 902 //********************
906 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar ); 903 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar );
907 904
908 905
909 icon = loadPixmap( pathString + "whatsnext" ); 906 icon = loadPixmap( pathString + "whatsnext" );
910 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 907 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
911 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 908 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
912 whatsnext_action->addTo( viewMenu ); 909 whatsnext_action->addTo( viewMenu );
913 connect( whatsnext_action, SIGNAL( activated() ), 910 connect( whatsnext_action, SIGNAL( activated() ),
914 mView->viewManager(), SLOT( showWhatsNextView() ) ); 911 mView->viewManager(), SLOT( showWhatsNextView() ) );
915 912
916 icon = loadPixmap( pathString + "xdays" ); 913 icon = loadPixmap( pathString + "xdays" );
917 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 914 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
918 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 915 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
919 xdays_action->addTo( viewMenu ); 916 xdays_action->addTo( viewMenu );
920 connect( xdays_action, SIGNAL( activated() ), 917 connect( xdays_action, SIGNAL( activated() ),
921 mView->viewManager(), SLOT( showNextXView() ) ); 918 mView->viewManager(), SLOT( showNextXView() ) );
922 919
923 920
924 icon = loadPixmap( pathString + "journal" ); 921 icon = loadPixmap( pathString + "journal" );
925 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 922 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
926 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 923 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
927 viewjournal_action->addTo( viewMenu ); 924 viewjournal_action->addTo( viewMenu );
928 connect( viewjournal_action, SIGNAL( activated() ), 925 connect( viewjournal_action, SIGNAL( activated() ),
929 mView->viewManager(), SLOT( showJournalView() ) ); 926 mView->viewManager(), SLOT( showJournalView() ) );
930 927
931 928
932 icon = loadPixmap( pathString + "day" ); 929 icon = loadPixmap( pathString + "day" );
933 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 930 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
934 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 931 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
935 day1_action->addTo( viewMenu ); 932 day1_action->addTo( viewMenu );
936 // action->addTo( toolBar ); 933 // action->addTo( toolBar );
937 connect( day1_action, SIGNAL( activated() ), 934 connect( day1_action, SIGNAL( activated() ),
938 mView->viewManager(), SLOT( showDayView() ) ); 935 mView->viewManager(), SLOT( showDayView() ) );
939 936
940 icon = loadPixmap( pathString + "workweek" ); 937 icon = loadPixmap( pathString + "workweek" );
941 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 938 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
942 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 939 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
943 day5_action->addTo( viewMenu ); 940 day5_action->addTo( viewMenu );
944 connect( day5_action, SIGNAL( activated() ), 941 connect( day5_action, SIGNAL( activated() ),
945 mView->viewManager(), SLOT( showWorkWeekView() ) ); 942 mView->viewManager(), SLOT( showWorkWeekView() ) );
946 943
947 icon = loadPixmap( pathString + "week" ); 944 icon = loadPixmap( pathString + "week" );
948 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 945 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
949 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 946 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
950 day7_action->addTo( viewMenu ); 947 day7_action->addTo( viewMenu );
951 connect( day7_action, SIGNAL( activated() ), 948 connect( day7_action, SIGNAL( activated() ),
952 mView->viewManager(), SLOT( showWeekView() ) ); 949 mView->viewManager(), SLOT( showWeekView() ) );
953 950
954 icon = loadPixmap( pathString + "workweek2" ); 951 icon = loadPixmap( pathString + "workweek2" );
955 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 952 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
956 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 953 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
957 day6_action->addTo( viewMenu ); 954 day6_action->addTo( viewMenu );
958 connect( day6_action, SIGNAL( activated() ), 955 connect( day6_action, SIGNAL( activated() ),
959 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 956 mView->viewManager(), SLOT( showMonthViewWeek() ) );
960 957
961 icon = loadPixmap( pathString + "month" ); 958 icon = loadPixmap( pathString + "month" );
962 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 959 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
963 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 960 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
964 month_action->addTo( viewMenu ); 961 month_action->addTo( viewMenu );
965 connect( month_action, SIGNAL( activated() ), 962 connect( month_action, SIGNAL( activated() ),
966 mView->viewManager(), SLOT( showMonthView() ) ); 963 mView->viewManager(), SLOT( showMonthView() ) );
967 964
968 icon = loadPixmap( pathString + "list" ); 965 icon = loadPixmap( pathString + "list" );
969 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 966 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
970 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 967 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
971 showlist_action->addTo( viewMenu ); 968 showlist_action->addTo( viewMenu );
972 connect( showlist_action, SIGNAL( activated() ), 969 connect( showlist_action, SIGNAL( activated() ),
973 mView->viewManager(), SLOT( showListView() ) ); 970 mView->viewManager(), SLOT( showListView() ) );
974 971
975 icon = loadPixmap( pathString + "todo" ); 972 icon = loadPixmap( pathString + "todo" );
976 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 973 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
977 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 974 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
978 todoview_action->addTo( viewMenu ); 975 todoview_action->addTo( viewMenu );
979 connect( todoview_action, SIGNAL( activated() ), 976 connect( todoview_action, SIGNAL( activated() ),
980 mView->viewManager(), SLOT( showTodoView() ) ); 977 mView->viewManager(), SLOT( showTodoView() ) );
981 978
982 979
983 980
984#if 0 981#if 0
985 action = new QAction( "view_timespan", "Time Span", 0, this ); 982 action = new QAction( "view_timespan", "Time Span", 0, this );
986 action->addTo( viewMenu ); 983 action->addTo( viewMenu );
987 connect( action, SIGNAL( activated() ), 984 connect( action, SIGNAL( activated() ),
988 mView->viewManager(), SLOT( showTimeSpanView() ) ); 985 mView->viewManager(), SLOT( showTimeSpanView() ) );
989#endif 986#endif
990 987
991 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 988 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
992 this ); 989 this );
993 mNewSubTodoAction->addTo( actionMenu ); 990 mNewSubTodoAction->addTo( actionMenu );
994 connect( mNewSubTodoAction, SIGNAL( activated() ), 991 connect( mNewSubTodoAction, SIGNAL( activated() ),
995 mView, SLOT( newSubTodo() ) ); 992 mView, SLOT( newSubTodo() ) );
996 993
997 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, 994 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0,
998 this ); 995 this );
999 action->addTo( actionMenu ); 996 action->addTo( actionMenu );
1000 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 997 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
1001 998
1002 999
1003 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 1000 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
1004 1001
1005 1002
1006 1003
1007 actionMenu->insertSeparator(); 1004 actionMenu->insertSeparator();
1008 action = new QAction( "manage cat", i18n("Edit category list..."), 0, 1005 action = new QAction( "manage cat", i18n("Edit category list..."), 0,
1009 this ); 1006 this );
1010 action->addTo( actionMenu ); 1007 action->addTo( actionMenu );
1011 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) ); 1008 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) );
1012 1009
1013 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1010 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1014 this ); 1011 this );
1015 action->addTo( actionMenu ); 1012 action->addTo( actionMenu );
1016 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1013 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1017 1014
1018 1015
1019 actionMenu->insertSeparator(); 1016 actionMenu->insertSeparator();
1020 icon = loadPixmap( pathString + "configure" ); 1017 icon = loadPixmap( pathString + "configure" );
1021 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this ); 1018 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this );
1022 action->addTo( actionMenu ); 1019 action->addTo( actionMenu );
1023 connect( action, SIGNAL( activated() ), 1020 connect( action, SIGNAL( activated() ),
1024 mView, SLOT( edit_options() ) ); 1021 mView, SLOT( edit_options() ) );
1025 icon = loadPixmap( pathString + "configure" ); 1022 icon = loadPixmap( pathString + "configure" );
1026 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this ); 1023 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this );
1027 action->addTo( actionMenu ); 1024 action->addTo( actionMenu );
1028 connect( action, SIGNAL( activated() ), 1025 connect( action, SIGNAL( activated() ),
1029 mView, SLOT( edit_global_options() ) ); 1026 mView, SLOT( edit_global_options() ) );
1030 if ( KOPrefs::instance()->mShowFullMenu ) { 1027 if ( KOPrefs::instance()->mShowFullMenu ) {
1031 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 1028 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
1032 1029
1033 } 1030 }
1034 // actionMenu->insertSeparator(); 1031 // actionMenu->insertSeparator();
1035 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 1032 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
1036 this ); 1033 this );
1037 action->addTo( importMenu_X ); 1034 action->addTo( importMenu_X );
1038 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 1035 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
1039 action = new QAction( "import_quick", i18n("Import last file"), 0, 1036 action = new QAction( "import_quick", i18n("Import last file"), 0,
1040 this ); 1037 this );
1041 action->addTo( importMenu_X ); 1038 action->addTo( importMenu_X );
1042 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 1039 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
1043 importMenu_X->insertSeparator(); 1040 importMenu_X->insertSeparator();
1044 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 1041 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
1045 this ); 1042 this );
1046 action->addTo( importMenu_X ); 1043 action->addTo( importMenu_X );
1047 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 1044 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
1048 //#ifndef DESKTOP_VERSION 1045 //#ifndef DESKTOP_VERSION
1049 importMenu_X->insertSeparator(); 1046 importMenu_X->insertSeparator();
1050 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 1047 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
1051 this ); 1048 this );
1052 action->addTo( importMenu_X ); 1049 action->addTo( importMenu_X );
1053 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 1050 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
1054 //#else 1051 //#else
1055#ifdef _OL_IMPORT_ 1052#ifdef _OL_IMPORT_
1056 importMenu_X->insertSeparator(); 1053 importMenu_X->insertSeparator();
1057 action = new QAction( "import_ol", i18n("Import from OL"), 0, 1054 action = new QAction( "import_ol", i18n("Import from OL"), 0,
1058 this ); 1055 this );
1059 action->addTo( importMenu_X ); 1056 action->addTo( importMenu_X );
1060 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 1057 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
1061#endif 1058#endif
1062 //#endif 1059 //#endif
1063 1060
1064 //importMenu->insertSeparator(); 1061 //importMenu->insertSeparator();
1065#if 0 1062#if 0
1066 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 1063 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
1067 this ); 1064 this );
1068 action->addTo( importMenu ); 1065 action->addTo( importMenu );
1069 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 1066 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
1070#endif 1067#endif
1071 action = new QAction( "save_cal", i18n("Save Calendar Backup..."), 0, 1068 action = new QAction( "save_cal", i18n("Save Calendar Backup..."), 0,
1072 this ); 1069 this );
1073 action->addTo( importMenu ); 1070 action->addTo( importMenu );
1074 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 1071 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
1075 importMenu->insertSeparator(); 1072 importMenu->insertSeparator();
1076 importMenu->insertItem( i18n("Import"), importMenu_X ); 1073 importMenu->insertItem( i18n("Import"), importMenu_X );
1077 //importMenu->insertSeparator(); 1074 //importMenu->insertSeparator();
1078 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 1075 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
1079 this ); 1076 this );
1080 action->addTo( exportMenu_X ); 1077 action->addTo( exportMenu_X );
1081 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 1078 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
1082 1079
1083 1080
1084 //LR 1081 //LR
1085 QPopupMenu *ex2phone = new QPopupMenu( this ); 1082 QPopupMenu *ex2phone = new QPopupMenu( this );
1086 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1083 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1087 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1084 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1088 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 1085 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
1089 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 1086 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
1090 1087
1091 importMenu->insertItem( i18n("Export"), exportMenu_X ); 1088 importMenu->insertItem( i18n("Export"), exportMenu_X );
1092#ifndef DESKTOP_VERSION 1089#ifndef DESKTOP_VERSION
1093 //importMenu->insertSeparator(); 1090 //importMenu->insertSeparator();
1094 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 1091 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
1095 this ); 1092 this );
1096 brAction->addTo( beamMenu_X ); 1093 brAction->addTo( beamMenu_X );
1097 brAction->setToggleAction (true ) ; 1094 brAction->setToggleAction (true ) ;
1098 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 1095 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
1099 1096
1100 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 1097 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
1101 this ); 1098 this );
1102 action->addTo( beamMenu_X ); 1099 action->addTo( beamMenu_X );
1103 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 1100 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
1104 1101
1105 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 1102 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
1106 this ); 1103 this );
1107 action->addTo( beamMenu_X ); 1104 action->addTo( beamMenu_X );
1108 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 1105 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
1109 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 1106 importMenu->insertItem( i18n("Beam"), beamMenu_X );
1110#else 1107#else
1111 //importMenu->insertSeparator(); 1108 //importMenu->insertSeparator();
1112 icon = loadPixmap( pathString + "print" ); 1109 icon = loadPixmap( pathString + "print" );
1113 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 1110 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
1114 action->addTo( beamMenu_X ); 1111 action->addTo( beamMenu_X );
1115 connect( action, SIGNAL( activated() ), 1112 connect( action, SIGNAL( activated() ),
1116 this, SLOT( printCal() ) ); 1113 this, SLOT( printCal() ) );
1117 1114
1118 icon = loadPixmap( pathString + "print" ); 1115 icon = loadPixmap( pathString + "print" );
1119 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 1116 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
1120 action->addTo( beamMenu_X ); 1117 action->addTo( beamMenu_X );
1121 connect( action, SIGNAL( activated() ), 1118 connect( action, SIGNAL( activated() ),
1122 this, SLOT( printSel() ) ); 1119 this, SLOT( printSel() ) );
1123 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 1120 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
1124 action->addTo( beamMenu_X ); 1121 action->addTo( beamMenu_X );
1125 connect( action, SIGNAL( activated() ), 1122 connect( action, SIGNAL( activated() ),
1126 mView->viewManager(), SLOT( slotprintWNV() ) ); 1123 mView->viewManager(), SLOT( slotprintWNV() ) );
1127 1124
1128 1125
1129 icon = loadPixmap( pathString + "print" ); 1126 icon = loadPixmap( pathString + "print" );
1130 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this ); 1127 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this );
1131 action->addTo( beamMenu_X ); 1128 action->addTo( beamMenu_X );
1132 connect( action, SIGNAL( activated() ), 1129 connect( action, SIGNAL( activated() ),
1133 this, SLOT( printListView() ) ); 1130 this, SLOT( printListView() ) );
1134 1131
1135 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this ); 1132 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this );
1136 action->addTo( beamMenu_X ); 1133 action->addTo( beamMenu_X );
1137 connect( action, SIGNAL( activated() ), 1134 connect( action, SIGNAL( activated() ),
1138 mView, SLOT( slotprintSelInc() ) ); 1135 mView, SLOT( slotprintSelInc() ) );
1139 1136
1140 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1137 importMenu->insertItem( i18n("Print"), beamMenu_X );
1141#endif 1138#endif
1142 1139
1143 importMenu->insertSeparator(); 1140 importMenu->insertSeparator();
1144 action = new QAction( "beam all", i18n("Save"), 0, 1141 action = new QAction( "beam all", i18n("Save"), 0,
1145 this ); 1142 this );
1146 action->addTo( importMenu ); 1143 action->addTo( importMenu );
1147 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1144 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1148 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1145 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1149 this ); 1146 this );
1150 action->addTo( importMenu ); 1147 action->addTo( importMenu );
1151 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1148 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1152 1149
1153 //menuBar->insertItem( "Configure",configureMenu ); 1150 //menuBar->insertItem( "Configure",configureMenu );
1154 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1151 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1155 icon = loadPixmap( "korganizer/korganizer" ); 1152 icon = loadPixmap( "korganizer/korganizer" );
1156 1153
1157 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1154 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1158 action->addTo( helpMenu ); 1155 action->addTo( helpMenu );
1159 connect( action, SIGNAL( activated() ), 1156 connect( action, SIGNAL( activated() ),
1160 SLOT( whatsNew() ) ); 1157 SLOT( whatsNew() ) );
1161 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1158 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1162 action->addTo( helpMenu ); 1159 action->addTo( helpMenu );
1163 connect( action, SIGNAL( activated() ), 1160 connect( action, SIGNAL( activated() ),
1164 SLOT( features() ) ); 1161 SLOT( features() ) );
1165 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1162 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1166 action->addTo( helpMenu ); 1163 action->addTo( helpMenu );
1167 connect( action, SIGNAL( activated() ), 1164 connect( action, SIGNAL( activated() ),
1168 SLOT( keyBindings() ) ); 1165 SLOT( keyBindings() ) );
1169 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); 1166 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this );
1170 action->addTo( helpMenu ); 1167 action->addTo( helpMenu );
1171 connect( action, SIGNAL( activated() ), 1168 connect( action, SIGNAL( activated() ),
1172 SLOT( storagehowto() ) ); 1169 SLOT( storagehowto() ) );
1173 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this ); 1170 action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this );