-rw-r--r-- | gammu/emb/common/service/gsmcal.c | 2 | ||||
-rw-r--r-- | gammu/emb/gammu/gammu.c | 41 | ||||
-rw-r--r-- | libkcal/phoneformat.cpp | 53 |
3 files changed, 80 insertions, 16 deletions
diff --git a/gammu/emb/common/service/gsmcal.c b/gammu/emb/common/service/gsmcal.c index 598292c..ddf9790 100644 --- a/gammu/emb/common/service/gsmcal.c +++ b/gammu/emb/common/service/gsmcal.c @@ -141,9 +141,9 @@ GSM_Error GSM_EncodeVCALENDAR(char *Buffer, int *Length, GSM_CalendarEntry *note if (Alarm != -1) { if (note->Entries[Alarm].EntryType == CAL_SILENT_ALARM_DATETIME) { SaveVCALDateTime(Buffer, Length, ¬e->Entries[Alarm].Date, "DALARM"); } else { - SaveVCALDateTime(Buffer, Length, ¬e->Entries[Alarm].Date, "AALARM"); + SaveVCALDateTime(Buffer, Length, ¬e->Entries[Alarm].Date, "DALARM"); } } /* Birthday is known to be recurranced */ diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c index 5163d81..a3b93a8 100644 --- a/gammu/emb/gammu/gammu.c +++ b/gammu/emb/gammu/gammu.c @@ -8240,13 +8240,14 @@ int main(int argc, char *argv[]) exit(1); } /* Is first parameter numeric? If so treat it as config that should be loaded. */ - if (isdigit(argv[1][0])) { - only_config = atoi(argv[1]); - if (only_config >= 0) start++; else only_config = -1; - } - + //if (isdigit(argv[1][0])) { + //only_config = atoi(argv[1]); + //if (only_config >= 0) start++; else only_config = -1; + //} + only_config = 0;; +#if 0 GSM_ReadConfig(NULL, &s.Config[0], 0); s.ConfigNum = 1; GSM_Config *con = &s.Config[0]; @@ -8268,9 +8269,9 @@ int main(int argc, char *argv[]) con->Connection = strdup(tempC); con->DefaultConnection = false; } argc = argc-3; -#if 0 + //#if 0 if ( ! mConnection.isEmpty() ) { cfg->Connection = strdup(mConnection.latin1()); cfg->DefaultConnection = false; qDebug("Connection set %s ", cfg->Connection ); @@ -8289,9 +8290,9 @@ int main(int argc, char *argv[]) } #endif -#if 0 + cfg=GSM_FindGammuRC(); for (i = 0; i <= MAX_CONFIG_NUM; i++) { if (cfg!=NULL) { cp = INI_GetValue(cfg, "gammu", "gammucoding", false); @@ -8314,8 +8315,9 @@ int main(int argc, char *argv[]) } } /* Wanted user specific configuration? */ + if (only_config != -1) { /* Here we get only in first for loop */ if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break; } else { @@ -8349,9 +8351,33 @@ int main(int argc, char *argv[]) /* We wanted to read just user specified configuration. */ if (only_config != -1) {break;} } +#if 0 + GSM_Config *con = &s.Config[0]; + + char* tempC; + tempC = argv[argc-1]+2; + if ( *tempC != 0 ) { + fprintf(stderr,"Using model %s \n",tempC); + strcpy(con->Model,tempC ); + } + tempC = argv[argc-2]+2; + if ( *tempC != 0 ) { + fprintf(stderr,"Using device %s \n",tempC); + con->Device = strdup(tempC); + con->DefaultDevice = false; + } + tempC = argv[argc-3]+2; + if ( *tempC != 0 ) { + fprintf(stderr,"Using connection %s \n",tempC); + con->Connection = strdup(tempC); + con->DefaultConnection = false; + } #endif + argc = argc-3; + + /* Do we have enough parameters? */ if (argc == 1 + start) { HelpGeneral(); printmsg("Too few parameters!\n"); @@ -8368,8 +8394,9 @@ int main(int argc, char *argv[]) /* Check parameters */ while (Parameters[z].Function != NULL) { if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) { if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) { + fprintf(stderr,"Executing \n"); Parameters[z].Function(argc - start, argv + start); break; } else { count_failed = true; diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index 2ad1b5a..6df639f 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp @@ -34,8 +34,9 @@ #include <kdebug.h> #include <klocale.h> #include <kglobal.h> +#include <kmessagebox.h> #include "calendar.h" #include "alarm.h" #include "recurrence.h" @@ -245,8 +246,10 @@ ulong PhoneFormat::getCsumEvent( Event* event ) } attList << list.join(""); attList << event->categoriesStr(); + //qDebug("csum cat %s", event->categoriesStr().latin1()); + attList << event->secrecyStr(); return PhoneFormat::getCsum(attList ); } ulong PhoneFormat::getCsum( const QStringList & attList) @@ -268,8 +271,11 @@ ulong PhoneFormat::getCsum( const QStringList & attList) cSum += add; } } } + //QString dump = attList.join(","); + //qDebug("csum: %s", dump.latin1()); + return cSum; } //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); @@ -286,17 +292,27 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) #endif QString command ="./kammu --backup " + fileName + " -yes -C" + mConnection +" -D" + mDevice +" -M" + mModel; int ret = system ( command.latin1() ); - if ( ret != 0 ) + if ( ret != 0 ) { + qDebug("Error::command returned %d", ret); return false; + } + qDebug("Command returned %d", ret); VCalFormat vfload; vfload.setLocalTime ( true ); + qDebug("loading file ..."); + if ( ! vfload.load( calendar, fileName ) ) return false; QPtrList<Event> er = calendar->rawEvents(); Event* ev = er.first(); + qDebug("reading events... "); while ( ev ) { + QStringList cat = ev->categories(); + if ( cat.contains( "MeetingDEF" )) { + ev->setCategories( QStringList() ); + } int id = ev->pilotId(); Event *event; event = existingCal->event( mProfileName ,QString::number( id ) ); if ( event ) { @@ -314,8 +330,9 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) event->setID( mProfileName,QString::number( id ) ); ev = er.next(); } { + qDebug("reading todos... "); QPtrList<Todo> tr = calendar->rawTodos(); Todo* ev = tr.first(); while ( ev ) { @@ -481,20 +498,29 @@ bool PhoneFormat::save( Calendar *calendar) if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { calendar->deleteTodo( to ); } to = tl.next(); - } + } // 3 save file VCalFormat vfsave; vfsave.setLocalTime ( true ); if ( ! vfsave.save( calendar, fileName ) ) return false; // 4 call kammu QString command ="./kammu --restore " + fileName + " -C" + - mConnection +" -D" + mDevice +" -M" + mModel;; - int ret = system ( command.latin1() ); - if ( ret != 0 ) + mConnection +" -D" + mDevice +" -M" + mModel; + int ret; + while ( (ret = system ( command.latin1())) != 0 ) { + qDebug("Error S::command returned %d. asking users", ret); + int retval = KMessageBox::warningContinueCancel(0, + i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel")); + if ( retval != KMessageBox::Continue ) + return false; + } + if ( ret != 0 ) { + qDebug("Error S::command returned %d", ret); return false; + } // 5 reread data message = i18n(" Rereading all data ... "); status.setText ( message ); qApp->processEvents(); @@ -514,18 +540,24 @@ bool PhoneFormat::save( Calendar *calendar) QPtrList<Event> er1 = calendarTemp->rawEvents(); Event* ev1; int procCount = 0; while ( ev ) { - qDebug("event new ID "); + //qDebug("event new ID %s",ev->summary().latin1()); status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); - QString cSum = ev->getCsum(mProfileName); + uint csum; + csum = PhoneFormat::getCsumEvent( ev ); + QString cSum = QString::number( csum ); + ev->setCsum( mProfileName, cSum ); + //qDebug("Event cSum %s ", cSum.latin1()); ev1 = er1.first(); while ( ev1 ) { if ( ev1->getCsum( mProfileName ) == cSum ) { er1.remove( ev1 ); afterSave( ev ); ev->setID(mProfileName, ev1->getID(mProfileName) ); + //qDebug("Event found on phone for %s ", ev->summary().latin1()); + break; } ev1 = er1.next(); } @@ -537,8 +569,9 @@ bool PhoneFormat::save( Calendar *calendar) ev = er.next(); } //algo 6 compare todo + tl = calendar->rawTodos(); to = tl.first(); procCount = 0; QPtrList<Todo> tl1 = calendarTemp->rawTodos(); Todo* to1 ; @@ -546,9 +579,13 @@ bool PhoneFormat::save( Calendar *calendar) while ( to ) { qDebug("todo2 %d ", procCount); status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); - QString cSum = to->getCsum(mProfileName); + uint csum; + csum = PhoneFormat::getCsumTodo( to ); + QString cSum = QString::number( csum ); + to->setCsum( mProfileName, cSum ); + qDebug("Todo cSum %s ", cSum.latin1()); Todo* to1 = tl1.first(); while ( to1 ) { if ( to1->getCsum( mProfileName ) == cSum ) { tl1.remove( to1 ); |