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
@@ -1091,391 +1091,402 @@
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
@@ -93,992 +93,997 @@
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;
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index c9e9870..651194b 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,587 +1,588 @@
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
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
@@ -17,773 +17,770 @@
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() ),