author | zautrix <zautrix> | 2004-10-17 14:32:16 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-17 14:32:16 (UTC) |
commit | 780a12295cbbcf4eff4f9570322c1cac517414ad (patch) (side-by-side diff) | |
tree | 4c68b7e6ee854f9d4f0e7e3032f7c70cc45668be | |
parent | f909868a098a22c17906f3d2ab05d5fac0332e85 (diff) | |
download | kdepimpi-780a12295cbbcf4eff4f9570322c1cac517414ad.zip kdepimpi-780a12295cbbcf4eff4f9570322c1cac517414ad.tar.gz kdepimpi-780a12295cbbcf4eff4f9570322c1cac517414ad.tar.bz2 |
many kde sync fixes
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | kde2file/caldump/main.cpp | 97 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.cpp | 7 |
3 files changed, 73 insertions, 33 deletions
@@ -1,51 +1,51 @@ ############################################################################# # Makefile for building: kdepim-desktop -# Generated by qmake (1.07a) (Qt 3.3.3) on: Sat Oct 16 22:32:03 2004 +# Generated by qmake (1.07a) (Qt 3.3.3) on: Sun Oct 17 11:53:22 2004 # Project: kdepim-desktop.pro # Template: subdirs # Command: $(QMAKE) "CONFIG+=thread" "CONFIG+=debug" -o Makefile kdepim-desktop.pro ############################################################################# MAKEFILE = Makefile QMAKE = qmake DEL_FILE = rm -f CHK_DIR_EXISTS= test -d MKDIR = mkdir -p INSTALL_FILE= INSTALL_DIR = SUBTARGETS = \ sub-gammu-emb-common \ sub-gammu-emb-gammu \ sub-libical \ sub-libkcal \ sub-microkde \ sub-libkdepim \ sub-kabc \ sub-korganizer \ sub-kaddressbook \ sub-kabc-plugins-file \ sub-kabc-plugins-dir first: all all: Makefile $(SUBTARGETS) gammu/emb/common/$(MAKEFILE): @$(CHK_DIR_EXISTS) "gammu/emb/common" || $(MKDIR) "gammu/emb/common" cd gammu/emb/common && $(QMAKE) common.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE) sub-gammu-emb-common: gammu/emb/common/$(MAKEFILE) FORCE cd gammu/emb/common && $(MAKE) -f $(MAKEFILE) gammu/emb/gammu/$(MAKEFILE): @$(CHK_DIR_EXISTS) "gammu/emb/gammu" || $(MKDIR) "gammu/emb/gammu" cd gammu/emb/gammu && $(QMAKE) gammu.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE) sub-gammu-emb-gammu: gammu/emb/gammu/$(MAKEFILE) FORCE cd gammu/emb/gammu && $(MAKE) -f $(MAKEFILE) libical/$(MAKEFILE): @$(CHK_DIR_EXISTS) "libical" || $(MKDIR) "libical" cd libical && $(QMAKE) libical.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE) sub-libical: libical/$(MAKEFILE) FORCE cd libical && $(MAKE) -f $(MAKEFILE) libkcal/$(MAKEFILE): diff --git a/kde2file/caldump/main.cpp b/kde2file/caldump/main.cpp index 76bfad3..8d81307 100644 --- a/kde2file/caldump/main.cpp +++ b/kde2file/caldump/main.cpp @@ -9,200 +9,237 @@ * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * * As a special exception, permission is given to link this program * * with any edition of Qt, and distribute the resulting executable, * * without including the source code for Qt in the source distribution. * * * ******************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #if TIME_WITH_SYS_TIME # include <sys/time.h> # include <time.h> #else # if HAVE_SYS_TIME_H # include <sys/time.h> # else # include <time.h> # endif #endif #include <kcmdlineargs.h> #include <kaboutdata.h> #include <klocale.h> #include <kglobal.h> #include <kconfig.h> #include <kstandarddirs.h> #include <kdebug.h> #include <libkcal/calformat.h> #include <libkcal/calendarresources.h> #include <libkcal/resourcelocal.h> #include <libkcal/filestorage.h> #include <libkcal/icalformat.h> #include <qdatetime.h> #include <qfile.h> +#include <qdir.h> #include <stdlib.h> #include <iostream> using namespace KCal; using namespace std; static const char progName[] = "kdecalendar"; static const char progDisplay[] = "KDE_Calendar"; static const char progVersion[] = "33.1/3"; static const char progDesc[] = "A command line interface to KDE calendars"; static KCmdLineOptions options[] = { { "dump", I18N_NOOP( "Dumps calendar" ), 0 }, { "read", I18N_NOOP( "Reads calendar" ), 0 }, KCmdLineLastOption }; int main( int argc, char *argv[] ) { KAboutData aboutData( progName, // internal program name I18N_NOOP( progDisplay ), // displayable program name. progVersion, // version string I18N_NOOP( progDesc ), // short porgram description KAboutData::License_GPL, // license type "(c) 2004, Lutz Rogowski", // copyright statement 0, // any free form text "", // program home page address "bugs.kde.org" // bug report email address ); // KCmdLineArgs::init() final 'true' argument indicates no commandline options // for QApplication/KApplication (no KDE or Qt options) KCmdLineArgs::init( argc, argv, &aboutData, true ); KCmdLineArgs::addCmdLineOptions( options ); // Add our own options. KInstance ins ( progName ); KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); bool read = false; if ( args->isSet( "read" ) ) { read = true; qDebug("read "); } + QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; CalendarResources *calendarResource = 0; CalendarLocal *localCalendar = 0; - - calendarResource = new CalendarResources( "" ); + KConfig c( locate( "config", "korganizerrc" ) ); + c.setGroup( "Time & Date" ); + QString tz = c.readEntry( "TimeZoneId" ); + calendarResource = new CalendarResources( tz ); calendarResource->readConfig(); calendarResource->load(); qDebug("************************************* "); - qDebug("************************************* "); + qDebug("**************kdecaldump************* "); qDebug("************************************* "); qDebug("Using timezone id: %s", calendarResource->timeZoneId().latin1()); if ( !read ) { localCalendar = new CalendarLocal(); localCalendar->setTimeZoneId( calendarResource->timeZoneId()); KCal::Incidence::List allInc = calendarResource->rawIncidences(); Incidence::List::ConstIterator it; int num = 0; for( it = allInc.begin(); it != allInc.end(); ++it ) { ResourceCalendar * re = calendarResource->resource( (*it) ); if ( re && !re->readOnly() ) { ++num; Incidence* cl = (*it)->clone(); cl->setLastModified( (*it)->lastModified() ); if ( cl->type() == "Journal" ) localCalendar->addJournal( (Journal *) cl ); else if ( cl->type() == "Todo" ) localCalendar->addTodo( (Todo *) cl ); else if ( cl->type() == "Event" ) localCalendar->addEvent( (Event *) cl ); } } FileStorage* storage = new FileStorage( calendarResource ); - storage->setFileName( "/tmp/kdedumpall.ics" ); + storage->setFileName( fileName ); storage->setSaveFormat( new ICalFormat() ); storage->save(); delete storage; qDebug("************************************* "); + qDebug("************kdecaldump*************** "); qDebug("************************************* "); - qDebug("************************************* "); - qDebug("%d calendar entries dumped to file /tmp/kdedumpall.ics", num); + qDebug("%d calendar entries dumped to file %s", num, fileName.latin1()); } else { localCalendar = new CalendarLocal(); localCalendar->setTimeZoneId( calendarResource->timeZoneId()); FileStorage* storage = new FileStorage( localCalendar ); - storage->setFileName( "/tmp/kdedumpall.ics" ); + storage->setFileName( fileName ); int num = 0; int del = 0; + int add = 0; if ( storage->load() ) { - KCal::Incidence::List allInc = calendarResource->rawIncidences(); KCal::Incidence::List newInc = localCalendar->rawIncidences(); Incidence::List::ConstIterator it; - for( it = allInc.begin(); it != allInc.end(); ++it ) { - ResourceCalendar * re = calendarResource->resource( (*it) ); - if ( re && !re->readOnly() ) { - Incidence* cl = localCalendar->incidence( (*it)->uid() ); - if ( cl ) { - QDateTime lm = cl->lastModified(); - cl->setResources( (*it)->resources() ); - cl->setLastModified(lm); - } - ++del; - cl = (*it); + for( it = newInc.begin(); it != newInc.end(); ++it ) { + Incidence* cl = (*it)->clone(); + Incidence *incOld = calendarResource->incidence( cl->uid() ); + ResourceCalendar * res = 0; + if ( incOld ) + res = calendarResource->resource( incOld ); + if ( res ) { + ++num; + if ( incOld->type() == "Journal" ) + calendarResource->deleteJournal( (Journal *) incOld ); + else if ( incOld->type() == "Todo" ) + calendarResource->deleteTodo( (Todo *) incOld ); + else if ( incOld->type() == "Event" ) + calendarResource->deleteEvent( (Event *) incOld ); + if ( cl->type() == "Journal" ) - calendarResource->deleteJournal( (Journal *) cl ); + calendarResource->addJournal( (Journal *) cl, res ); else if ( cl->type() == "Todo" ) - calendarResource->deleteTodo( (Todo *) cl ); + calendarResource->addTodo( (Todo *) cl, res ); else if ( cl->type() == "Event" ) - calendarResource->deleteEvent( (Event *) cl ); + calendarResource->addEvent( (Event *) cl, res ); + + } else { + if ( incOld ) { + qDebug("ERROR: no resource found for old incidence "); + if ( incOld->type() == "Journal" ) + calendarResource->deleteJournal( (Journal *) incOld ); + else if ( incOld->type() == "Todo" ) + calendarResource->deleteTodo( (Todo *) incOld ); + else if ( incOld->type() == "Event" ) + calendarResource->deleteEvent( (Event *) incOld ); + + } + calendarResource->addIncidence( cl ); + ++add; + } + KCal::Incidence::List allInc = calendarResource->rawIncidences(); + + for( it = allInc.begin(); it != allInc.end(); ++it ) { + ResourceCalendar * re = calendarResource->resource( (*it) ); + if ( re && !re->readOnly() ) { + Incidence* cl = localCalendar->incidence( (*it)->uid() ); + if ( !cl ) { + ++del; + cl = (*it); + if ( cl->type() == "Journal" ) + calendarResource->deleteJournal( (Journal *) cl ); + else if ( cl->type() == "Todo" ) + calendarResource->deleteTodo( (Todo *) cl ); + else if ( cl->type() == "Event" ) + calendarResource->deleteEvent( (Event *) cl ); + //QDateTime lm = cl->lastModified(); + //cl->setResources( (*it)->resources() ); + //cl->setLastModified(lm); + } + } } - } - for( it = newInc.begin(); it != newInc.end(); ++it ) { - Incidence* cl = (*it)->clone(); - ++num; - calendarResource->addIncidence( cl ); - //cl->setLastModified( (*it)->lastModified() ); } calendarResource->save(); qDebug("************************************* "); + qDebug("************kdecaldump*************** "); qDebug("************************************* "); - qDebug("************************************* "); - qDebug("%d calendar entries deleted/ %d added from file /tmp/kdedumpall.ics", del, num); + qDebug("Calendar entries\nchanged %d\ndeleted %d\nadded %d\nfrom file %s", num,del, add, fileName.latin1()); } else qDebug("error loading file /tmp/kdedumpall.ics"); } if ( localCalendar ) { localCalendar->close(); delete localCalendar; } if ( calendarResource ) { calendarResource->close(); delete calendarResource; } qDebug("ente "); return 0; } diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index c6e06f8..8851097 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -736,99 +736,102 @@ QString KSyncManager::getPassword( ) lab.setEchoMode( QLineEdit::Password ); QVBoxLayout lay( &dia ); lay.setMargin(7); lay.setSpacing(7); lay.addWidget( &lab); dia.setFixedSize( 230,50 ); dia.setCaption( i18n("Enter password") ); QPushButton pb ( "OK", &dia); lay.addWidget( &pb ); connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); dia.show(); int res = dia.exec(); if ( res ) retfile = lab.text(); dia.hide(); qApp->processEvents(); return retfile; } void KSyncManager::confSync() { static KSyncPrefsDialog* sp = 0; if ( ! sp ) { sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); } sp->usrReadConfig(); #ifndef DESKTOP_VERSION sp->showMaximized(); #else sp->show(); #endif sp->exec(); mSyncProfileNames = sp->getSyncProfileNames(); mLocalMachineName = sp->getLocalMachineName (); QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); } void KSyncManager::syncKDE() { emit save(); switch(mTargetApp) { case (KAPI): break; case (KOPI): { - QString command ="./kdecaldump"; + QString command = qApp->applicationDirPath () + "/kdecaldump"; + if ( ! QFile::exists ( command ) ) + command = "kdecaldump"; + QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; system ( command.latin1()); - if ( syncWithFile( "/tmp/kdedumpall.ics",true ) ) { + if ( syncWithFile( fileName,true ) ) { if ( mWriteBackFile ) { command += " --read"; system ( command.latin1()); } } } break; case (PWMPI): break; default: qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); break; } } void KSyncManager::syncSharp() { if ( ! syncExternalApplication("sharp") ) qDebug("ERROR sync sharp "); } bool KSyncManager::syncExternalApplication(QString resource) { emit save(); if ( mAskForPreferences ) edit_sync_options(); qDebug("Sync extern %s", resource.latin1()); bool syncOK = mImplementation->syncExternal(this, resource); return syncOK; } void KSyncManager::syncPhone() { syncExternalApplication("phone"); } |