-rw-r--r-- | korganizer/calendarview.cpp | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 6e60c56..b0be340 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -1870,29 +1870,32 @@ bool CalendarView::restoreCalendarSettings() | |||
1870 | if ( cal->isStandard ) | 1870 | if ( cal->isStandard ) |
1871 | mCalendar->setDefaultCalendar( cal->mCalNumber ); | 1871 | mCalendar->setDefaultCalendar( cal->mCalNumber ); |
1872 | cal = calendars.next(); | 1872 | cal = calendars.next(); |
1873 | } | 1873 | } |
1874 | } | 1874 | } |
1875 | void CalendarView::addCalendarId( int id ) | 1875 | void CalendarView::addCalendarId( int id ) |
1876 | { | 1876 | { |
1877 | KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); | 1877 | KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); |
1878 | addCalendar( cal ); | 1878 | addCalendar( cal ); |
1879 | } | 1879 | } |
1880 | bool CalendarView::addCalendar( KopiCalendarFile * cal ) | 1880 | bool CalendarView::addCalendar( KopiCalendarFile * cal ) |
1881 | { | 1881 | { |
1882 | 1882 | cal->mErrorOnLoad = false; | |
1883 | if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) | 1883 | if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { |
1884 | cal->mLoadDt = QDateTime::currentDateTime(); | ||
1884 | return true; | 1885 | return true; |
1886 | } | ||
1885 | qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() ); | 1887 | qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() ); |
1886 | KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName)); | 1888 | KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName)); |
1889 | cal->mErrorOnLoad = true; | ||
1887 | return false; | 1890 | return false; |
1888 | } | 1891 | } |
1889 | bool CalendarView::openCalendar(QString filename, bool merge) | 1892 | bool CalendarView::openCalendar(QString filename, bool merge) |
1890 | { | 1893 | { |
1891 | 1894 | ||
1892 | if (filename.isEmpty()) { | 1895 | if (filename.isEmpty()) { |
1893 | return false; | 1896 | return false; |
1894 | } | 1897 | } |
1895 | 1898 | ||
1896 | if (!QFile::exists(filename)) { | 1899 | if (!QFile::exists(filename)) { |
1897 | KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); | 1900 | KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); |
1898 | return false; | 1901 | return false; |
@@ -1974,70 +1977,96 @@ void CalendarView::watchSavedFile() | |||
1974 | { | 1977 | { |
1975 | QFileInfo finf ( MainWindow::defaultFileName()); | 1978 | QFileInfo finf ( MainWindow::defaultFileName()); |
1976 | if ( !finf.exists() ) | 1979 | if ( !finf.exists() ) |
1977 | return; | 1980 | return; |
1978 | QDateTime dt = finf.lastModified (); | 1981 | QDateTime dt = finf.lastModified (); |
1979 | if ( dt < loadedFileVersion ) { | 1982 | if ( dt < loadedFileVersion ) { |
1980 | //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); | 1983 | //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); |
1981 | QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); | 1984 | QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); |
1982 | return; | 1985 | return; |
1983 | } | 1986 | } |
1984 | loadedFileVersion = dt; | 1987 | loadedFileVersion = dt; |
1985 | } | 1988 | } |
1986 | 1989 | bool CalendarView::checkAllFileVersions() | |
1990 | { | ||
1991 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; | ||
1992 | KopiCalendarFile * cal = calendars.first(); | ||
1993 | mCalendar->setDefaultCalendar( 1 ); | ||
1994 | mCalendar->setDefaultCalendarEnabledOnly(); | ||
1995 | if ( !checkFileVersion(MainWindow::defaultFileName())) | ||
1996 | return false; | ||
1997 | cal = calendars.next(); | ||
1998 | QDateTime storeTemp = loadedFileVersion; | ||
1999 | while ( cal ) { | ||
2000 | if ( !cal->mErrorOnLoad ) { | ||
2001 | mCalendar->setDefaultCalendar( cal->mCalNumber ); | ||
2002 | mCalendar->setDefaultCalendarEnabledOnly(); | ||
2003 | loadedFileVersion = cal->mLoadDt.addSecs( 15 ); | ||
2004 | if ( !checkFileVersion(cal->mFileName )) { | ||
2005 | loadedFileVersion = storeTemp; | ||
2006 | updateView(); | ||
2007 | return false; | ||
2008 | } | ||
2009 | } | ||
2010 | cal = calendars.next(); | ||
2011 | } | ||
2012 | loadedFileVersion = storeTemp; | ||
2013 | updateView(); | ||
2014 | return true; | ||
2015 | } | ||
1987 | bool CalendarView::checkFileVersion(QString fn) | 2016 | bool CalendarView::checkFileVersion(QString fn) |
1988 | { | 2017 | { |
1989 | QFileInfo finf ( fn ); | 2018 | QFileInfo finf ( fn ); |
1990 | if ( !finf.exists() ) | 2019 | if ( !finf.exists() ) |
1991 | return true; | 2020 | return true; |
1992 | QDateTime dt = finf.lastModified (); | 2021 | QDateTime dt = finf.lastModified (); |
1993 | //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); | 2022 | //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); |
1994 | //qDebug("file on disk version %s",dt.toString().latin1()); | 2023 | //qDebug("file on disk version %s",dt.toString().latin1()); |
1995 | if ( dt <= loadedFileVersion ) | 2024 | if ( dt <= loadedFileVersion ) |
1996 | return true; | 2025 | return true; |
1997 | int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , | 2026 | int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\n on disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(fn).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , |
1998 | i18n("KO/Pi Warning"),i18n("Overwrite"), | 2027 | i18n("KO/Pi Warning"),i18n("Overwrite"), |
1999 | i18n("Sync+save")); | 2028 | i18n("Sync+save")); |
2000 | 2029 | ||
2001 | if ( km == KMessageBox::Cancel ) | 2030 | if ( km == KMessageBox::Cancel ) |
2002 | return false; | 2031 | return false; |
2003 | if ( km == KMessageBox::Yes ) | 2032 | if ( km == KMessageBox::Yes ) |
2004 | return true; | 2033 | return true; |
2005 | 2034 | ||
2006 | setSyncDevice("deleteaftersync" ); | 2035 | setSyncDevice("deleteaftersync" ); |
2007 | mSyncManager->mAskForPreferences = true; | 2036 | mSyncManager->mAskForPreferences = true; |
2008 | mSyncManager->mSyncAlgoPrefs = 3; | 2037 | mSyncManager->mSyncAlgoPrefs = 3; |
2009 | mSyncManager->mWriteBackFile = false; | 2038 | mSyncManager->mWriteBackFile = false; |
2010 | mSyncManager->mWriteBackExistingOnly = false; | 2039 | mSyncManager->mWriteBackExistingOnly = false; |
2011 | mSyncManager->mShowSyncSummary = false; | 2040 | mSyncManager->mShowSyncSummary = false; |
2012 | syncCalendar( fn, 3 ); | 2041 | syncCalendar( fn, 3 ); |
2013 | Event * e = getLastSyncEvent(); | 2042 | Event * e = getLastSyncEvent(); |
2014 | if ( e ) | 2043 | if ( e ) |
2015 | deleteEvent ( e ); | 2044 | mCalendar->deleteEvent( e ); |
2016 | updateView(); | ||
2017 | return true; | 2045 | return true; |
2018 | } | 2046 | } |
2019 | bool CalendarView::saveCalendars() | 2047 | bool CalendarView::saveCalendars() |
2020 | { | 2048 | { |
2021 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; | 2049 | QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; |
2022 | KopiCalendarFile * cal = calendars.first(); | 2050 | KopiCalendarFile * cal = calendars.first(); |
2023 | mCalendar->setDefaultCalendar( 1 ); | 2051 | mCalendar->setDefaultCalendar( 1 ); |
2024 | mCalendar->setDefaultCalendarEnabledOnly(); | 2052 | mCalendar->setDefaultCalendarEnabledOnly(); |
2025 | saveCalendar( MainWindow::defaultFileName() ); | 2053 | saveCalendar( MainWindow::defaultFileName() ); |
2026 | cal = calendars.next(); | 2054 | cal = calendars.next(); |
2027 | while ( cal ) { | 2055 | while ( cal ) { |
2028 | if ( !cal->isReadOnly ) { | 2056 | if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { |
2029 | mCalendar->setDefaultCalendar( cal->mCalNumber ); | 2057 | mCalendar->setDefaultCalendar( cal->mCalNumber ); |
2030 | mCalendar->setDefaultCalendarEnabledOnly(); | 2058 | mCalendar->setDefaultCalendarEnabledOnly(); |
2031 | saveCalendar( cal->mFileName ); | 2059 | if ( saveCalendar( cal->mFileName ) ) |
2060 | cal->mLoadDt = QDateTime::currentDateTime(); | ||
2032 | } | 2061 | } |
2033 | cal = calendars.next(); | 2062 | cal = calendars.next(); |
2034 | } | 2063 | } |
2035 | restoreCalendarSettings(); | 2064 | restoreCalendarSettings(); |
2036 | } | 2065 | } |
2037 | bool CalendarView::saveCalendar( QString filename ) | 2066 | bool CalendarView::saveCalendar( QString filename ) |
2038 | { | 2067 | { |
2039 | 2068 | ||
2040 | // Store back all unsaved data into calendar object | 2069 | // Store back all unsaved data into calendar object |
2041 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); | 2070 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); |
2042 | if ( mViewManager->currentView() ) | 2071 | if ( mViewManager->currentView() ) |
2043 | mViewManager->currentView()->flushView(); | 2072 | mViewManager->currentView()->flushView(); |