-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 6 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 14 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 12 |
3 files changed, 27 insertions, 5 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index 78fa13b..1a1fd0e 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -1466,17 +1466,17 @@ | |||
1466 | { "Edit category list...","Ändere Kategorieliste..." }, | 1466 | { "Edit category list...","Ändere Kategorieliste..." }, |
1467 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, | 1467 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, |
1468 | { "Filepath: ","Dateipfad: " }, | 1468 | { "Filepath: ","Dateipfad: " }, |
1469 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, | 1469 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, |
1470 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, | 1470 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, |
1471 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, | 1471 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, |
1472 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, | 1472 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, |
1473 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, | 1473 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, |
1474 | { "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, | 1474 | { "Loading of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, |
1475 | { "Alarm Options","Alarm Einstellungen" }, | 1475 | { "Alarm Options","Alarm Einstellungen" }, |
1476 | { "Delete selected...","Lösche Ausgewählte..." }, | 1476 | { "Delete selected...","Lösche Ausgewählte..." }, |
1477 | { "None","Nichts" }, | 1477 | { "None","Nichts" }, |
1478 | { "Selection","Auswahl" }, | 1478 | { "Selection","Auswahl" }, |
1479 | { "Set categories","Setze Kategorien" }, | 1479 | { "Set categories","Setze Kategorien" }, |
1480 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, | 1480 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, |
1481 | { "Reset","Neu setzen" }, | 1481 | { "Reset","Neu setzen" }, |
1482 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, | 1482 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, |
@@ -1539,14 +1539,18 @@ | |||
1539 | { "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" }, | 1539 | { "Click this button to toggle show/hide <b>completed</b> todos","Klicke diesen Knopf um <b>zeige Erledigte</b> umzuschalten" }, |
1540 | { "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" }, | 1540 | { "Click this button to add a new subtodo to the currently selected todo","Klicke diesen Knopf um ein Untertodo zu dem gerade selektierten Todo hinzuzufügen" }, |
1541 | { "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." }, | 1541 | { "In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.","In dieser Spalte kann man einen <b>Kalender auf sichtbar schalten</b>. Wenn ein Kalender nicht sichtbar ist werden seine Einträge nicht in den Ansichten angezeigt. Man kann Einträge hinzufügen und laden/speichern wie gewöhnlich." }, |
1542 | { "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." }, | 1542 | { "In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.","In dieser Spalte wird der <b>Name des Kalenders</b> angezeigt. Wenn Sie auf den Namen klicken wird Information über die Kalenderdatei angezeigt. Wenn die Datei beim Start nicht geladen wurde können Sie hier erneut versuchen sie zu laden." }, |
1543 | { "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." }, | 1543 | { "In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as "do not use". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.","In dieser Spalte können die <b>Alarme eines Kalenders alle zusammen abgeschaltet werden</b>. Die Alarmdaten im Kalender selbst werden nicht verändert, es werde die Alarme intern als "nicht beachten" markiert. Nützlich wenn Sie den Kalender einer anderen Person laden aber nicht über dessen Alarme unterrichtet werden wollen." }, |
1544 | { "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." }, | 1544 | { "In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.","In dieser Spalte können Sie einen <b>Kalender und alle Einträge auf schreibgeschützt setzen</b>. Einträge eines schreibgeschützten Kalenders können nicht verändert werden und es können keine Einträge zum Kalender hinzugefügt werden. Wenn Sie die Einstellung eines Kalenders in dieser Spalte auf schreibgeschützt setzen werden alle Daten automatisch abgespeichert, da die Daten eines schreibgeschützten Kalenders später nicht mehr gespeichert werden." }, |
1545 | { "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." }, | 1545 | { "Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.","Klicken Sie diesen Knopf <b>um einen Kalender hinzuzufügen</b>. Sie können eine existierende Kalenderdatei hinzufügen oder einen neuen Kalender und KO/Pi legt dann eine neue leere Kalenderdatei für Sie an." }, |
1546 | { "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" }, | 1546 | { "<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)","<b>iCal (*.ics) Datei:</b><br>(Datei wird angelegt, wenn sie nicht existiert)" }, |
1547 | { "Error saving data","Fehler beim Abspeichern" }, | ||
1548 | { "Calendar(s) not saved:","Nicht gespeicherte Kalender:" }, | ||
1549 | { "","" }, | ||
1550 | { "","" }, | ||
1547 | { "","" }, | 1551 | { "","" }, |
1548 | { "","" }, | 1552 | { "","" }, |
1549 | { "","" }, | 1553 | { "","" }, |
1550 | { "","" }, | 1554 | { "","" }, |
1551 | { "","" }, | 1555 | { "","" }, |
1552 | { "","" }, | 1556 | { "","" }, |
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 316826a..ca071b2 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -830,17 +830,17 @@ void CalendarView::checkFiles() | |||
830 | while ( cal ) { | 830 | while ( cal ) { |
831 | if ( cal->mErrorOnLoad ) { | 831 | if ( cal->mErrorOnLoad ) { |
832 | message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; | 832 | message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; |
833 | } | 833 | } |
834 | cal = calendars.next(); | 834 | cal = calendars.next(); |
835 | } | 835 | } |
836 | if ( !message.isEmpty() ) { | 836 | if ( !message.isEmpty() ) { |
837 | 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); | 837 | 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); |
838 | KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); | 838 | KMessageBox::error(this,message, i18n("Loading of calendar(s) failed")); |
839 | } | 839 | } |
840 | static bool firstTime = true; | 840 | static bool firstTime = true; |
841 | if ( firstTime ) { | 841 | if ( firstTime ) { |
842 | firstTime = false; | 842 | firstTime = false; |
843 | QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); | 843 | QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); |
844 | } | 844 | } |
845 | } | 845 | } |
846 | void CalendarView::checkAlarms() | 846 | void CalendarView::checkAlarms() |
@@ -2526,28 +2526,38 @@ bool CalendarView::checkFileVersion(QString fn) | |||
2526 | return true; | 2526 | return true; |
2527 | } | 2527 | } |
2528 | bool CalendarView::saveCalendars() | 2528 | bool CalendarView::saveCalendars() |
2529 | { | 2529 | { |
2530 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; | 2530 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; |
2531 | KopiCalendarFile * cal = calendars.first(); | 2531 | KopiCalendarFile * cal = calendars.first(); |
2532 | mCalendar->setDefaultCalendar( 1 ); | 2532 | mCalendar->setDefaultCalendar( 1 ); |
2533 | mCalendar->setDefaultCalendarEnabledOnly(); | 2533 | mCalendar->setDefaultCalendarEnabledOnly(); |
2534 | saveCalendar( MainWindow::defaultFileName() ); | 2534 | QString saveError; |
2535 | if ( !saveCalendar( MainWindow::defaultFileName() ) ) | ||
2536 | saveError = cal->mName +"\n"; | ||
2535 | cal = calendars.next(); | 2537 | cal = calendars.next(); |
2536 | while ( cal ) { | 2538 | while ( cal ) { |
2537 | if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { | 2539 | if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { |
2538 | mCalendar->setDefaultCalendar( cal->mCalNumber ); | 2540 | mCalendar->setDefaultCalendar( cal->mCalNumber ); |
2539 | mCalendar->setDefaultCalendarEnabledOnly(); | 2541 | mCalendar->setDefaultCalendarEnabledOnly(); |
2540 | if ( saveCalendar( cal->mFileName ) ) | 2542 | if ( saveCalendar( cal->mFileName ) ) |
2541 | cal->mLoadDt = QDateTime::currentDateTime(); | 2543 | cal->mLoadDt = QDateTime::currentDateTime(); |
2544 | else | ||
2545 | saveError += cal->mName + "\n"; | ||
2542 | } | 2546 | } |
2543 | cal = calendars.next(); | 2547 | cal = calendars.next(); |
2544 | } | 2548 | } |
2545 | restoreCalendarSettings(); | 2549 | restoreCalendarSettings(); |
2550 | |||
2551 | if ( !saveError.isEmpty() ) { | ||
2552 | saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; | ||
2553 | KMessageBox::error(this, saveError, i18n("Error saving data")); | ||
2554 | return false; | ||
2555 | } | ||
2546 | return true; | 2556 | return true; |
2547 | } | 2557 | } |
2548 | bool CalendarView::saveCalendar( QString filename ) | 2558 | bool CalendarView::saveCalendar( QString filename ) |
2549 | { | 2559 | { |
2550 | 2560 | ||
2551 | // Store back all unsaved data into calendar object | 2561 | // Store back all unsaved data into calendar object |
2552 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); | 2562 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); |
2553 | if ( mViewManager->currentView() ) | 2563 | if ( mViewManager->currentView() ) |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 94bc4c1..9c55e9f 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -501,28 +501,36 @@ void MainWindow::showMaximized () | |||
501 | } | 501 | } |
502 | void MainWindow::closeEvent( QCloseEvent* ce ) | 502 | void MainWindow::closeEvent( QCloseEvent* ce ) |
503 | { | 503 | { |
504 | 504 | ||
505 | 505 | ||
506 | 506 | ||
507 | if ( ! KOPrefs::instance()->mAskForQuit ) { | 507 | if ( ! KOPrefs::instance()->mAskForQuit ) { |
508 | saveOnClose(); | 508 | saveOnClose(); |
509 | if ( mCalendarModifiedFlag ) { | ||
510 | ce->ignore(); | ||
511 | return; | ||
512 | } | ||
509 | mClosed = true; | 513 | mClosed = true; |
510 | ce->accept(); | 514 | ce->accept(); |
511 | return; | 515 | return; |
512 | 516 | ||
513 | } | 517 | } |
514 | 518 | ||
515 | switch( QMessageBox::information( this, "KO/Pi", | 519 | switch( QMessageBox::information( this, "KO/Pi", |
516 | i18n("Do you really want\nto close KO/Pi?"), | 520 | i18n("Do you really want\nto close KO/Pi?"), |
517 | i18n("Close"), i18n("No"), | 521 | i18n("Close"), i18n("No"), |
518 | 0, 0 ) ) { | 522 | 0, 0 ) ) { |
519 | case 0: | 523 | case 0: |
520 | saveOnClose(); | 524 | saveOnClose(); |
525 | if ( mCalendarModifiedFlag ) { | ||
526 | ce->ignore(); | ||
527 | return; | ||
528 | } | ||
521 | mClosed = true; | 529 | mClosed = true; |
522 | ce->accept(); | 530 | ce->accept(); |
523 | break; | 531 | break; |
524 | case 1: | 532 | case 1: |
525 | ce->ignore(); | 533 | ce->ignore(); |
526 | break; | 534 | break; |
527 | case 2: | 535 | case 2: |
528 | 536 | ||
@@ -1997,18 +2005,18 @@ void MainWindow::save() | |||
1997 | backupAllFiles(); | 2005 | backupAllFiles(); |
1998 | } | 2006 | } |
1999 | ; // KPimGlobalPrefs::instance()->mLastBackupDate | 2007 | ; // KPimGlobalPrefs::instance()->mLastBackupDate |
2000 | } | 2008 | } |
2001 | QTime neededSaveTime = QDateTime::currentDateTime().time(); | 2009 | QTime neededSaveTime = QDateTime::currentDateTime().time(); |
2002 | if ( !isMinimized () ) | 2010 | if ( !isMinimized () ) |
2003 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); | 2011 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); |
2004 | qDebug("KO: Start saving data to file!"); | 2012 | qDebug("KO: Start saving data to file!"); |
2005 | mView->saveCalendars(); | 2013 | if ( mView->saveCalendars() ) |
2006 | mCalendarModifiedFlag = false; | 2014 | mCalendarModifiedFlag = false; |
2007 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); | 2015 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); |
2008 | qDebug("KO: Needed %d ms for saving.",msNeeded ); | 2016 | qDebug("KO: Needed %d ms for saving.",msNeeded ); |
2009 | QString savemes; | 2017 | QString savemes; |
2010 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); | 2018 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); |
2011 | if ( !isMinimized () ) | 2019 | if ( !isMinimized () ) |
2012 | setCaption(savemes); | 2020 | setCaption(savemes); |
2013 | else | 2021 | else |
2014 | qDebug(savemes); | 2022 | qDebug(savemes); |