summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/service/gsmcal.c2
-rw-r--r--gammu/emb/gammu/gammu.c41
-rw-r--r--libkcal/phoneformat.cpp53
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
@@ -139,13 +139,13 @@ GSM_Error GSM_EncodeVCALENDAR(char *Buffer, int *Length, GSM_CalendarEntry *note
139 } 139 }
140 140
141 if (Alarm != -1) { 141 if (Alarm != -1) {
142 if (note->Entries[Alarm].EntryType == CAL_SILENT_ALARM_DATETIME) { 142 if (note->Entries[Alarm].EntryType == CAL_SILENT_ALARM_DATETIME) {
143 SaveVCALDateTime(Buffer, Length, &note->Entries[Alarm].Date, "DALARM"); 143 SaveVCALDateTime(Buffer, Length, &note->Entries[Alarm].Date, "DALARM");
144 } else { 144 } else {
145 SaveVCALDateTime(Buffer, Length, &note->Entries[Alarm].Date, "AALARM"); 145 SaveVCALDateTime(Buffer, Length, &note->Entries[Alarm].Date, "DALARM");
146 } 146 }
147 } 147 }
148 148
149 /* Birthday is known to be recurranced */ 149 /* Birthday is known to be recurranced */
150 if (Recurrance != -1 && note->Type != GSM_CAL_BIRTHDAY) { 150 if (Recurrance != -1 && note->Type != GSM_CAL_BIRTHDAY) {
151 switch(note->Entries[Recurrance].Number/24) { 151 switch(note->Entries[Recurrance].Number/24) {
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
@@ -8238,17 +8238,18 @@ int main(int argc, char *argv[])
8238 if (strncmp(argv[1 + start], "--help", 6) == 0) { 8238 if (strncmp(argv[1 + start], "--help", 6) == 0) {
8239 Help(argc - start, argv + start); 8239 Help(argc - start, argv + start);
8240 exit(1); 8240 exit(1);
8241 } 8241 }
8242 8242
8243 /* Is first parameter numeric? If so treat it as config that should be loaded. */ 8243 /* Is first parameter numeric? If so treat it as config that should be loaded. */
8244 if (isdigit(argv[1][0])) { 8244 //if (isdigit(argv[1][0])) {
8245 only_config = atoi(argv[1]); 8245 //only_config = atoi(argv[1]);
8246 if (only_config >= 0) start++; else only_config = -1; 8246 //if (only_config >= 0) start++; else only_config = -1;
8247 } 8247 //}
8248 8248 only_config = 0;;
8249#if 0
8249 GSM_ReadConfig(NULL, &s.Config[0], 0); 8250 GSM_ReadConfig(NULL, &s.Config[0], 0);
8250 s.ConfigNum = 1; 8251 s.ConfigNum = 1;
8251 GSM_Config *con = &s.Config[0]; 8252 GSM_Config *con = &s.Config[0];
8252 8253
8253 char* tempC; 8254 char* tempC;
8254 tempC = argv[argc-1]+2; 8255 tempC = argv[argc-1]+2;
@@ -8266,13 +8267,13 @@ int main(int argc, char *argv[])
8266 if ( *tempC != 0 ) { 8267 if ( *tempC != 0 ) {
8267 fprintf(stderr,"Using connection %s \n",tempC); 8268 fprintf(stderr,"Using connection %s \n",tempC);
8268 con->Connection = strdup(tempC); 8269 con->Connection = strdup(tempC);
8269 con->DefaultConnection = false; 8270 con->DefaultConnection = false;
8270 } 8271 }
8271 argc = argc-3; 8272 argc = argc-3;
8272#if 0 8273 //#if 0
8273 if ( ! mConnection.isEmpty() ) { 8274 if ( ! mConnection.isEmpty() ) {
8274 cfg->Connection = strdup(mConnection.latin1()); 8275 cfg->Connection = strdup(mConnection.latin1());
8275 cfg->DefaultConnection = false; 8276 cfg->DefaultConnection = false;
8276 qDebug("Connection set %s ", cfg->Connection ); 8277 qDebug("Connection set %s ", cfg->Connection );
8277 8278
8278 } 8279 }
@@ -8287,13 +8288,13 @@ int main(int argc, char *argv[])
8287 cfg->DefaultModel = false; 8288 cfg->DefaultModel = false;
8288 qDebug("Model set %s ",cfg->Model ); 8289 qDebug("Model set %s ",cfg->Model );
8289 } 8290 }
8290 8291
8291#endif 8292#endif
8292 8293
8293#if 0 8294
8294 cfg=GSM_FindGammuRC(); 8295 cfg=GSM_FindGammuRC();
8295 for (i = 0; i <= MAX_CONFIG_NUM; i++) { 8296 for (i = 0; i <= MAX_CONFIG_NUM; i++) {
8296 if (cfg!=NULL) { 8297 if (cfg!=NULL) {
8297 cp = INI_GetValue(cfg, "gammu", "gammucoding", false); 8298 cp = INI_GetValue(cfg, "gammu", "gammucoding", false);
8298 if (cp) di.coding = cp; 8299 if (cp) di.coding = cp;
8299 8300
@@ -8312,12 +8313,13 @@ int main(int argc, char *argv[])
8312 } 8313 }
8313#endif 8314#endif
8314 } 8315 }
8315 } 8316 }
8316 8317
8317 /* Wanted user specific configuration? */ 8318 /* Wanted user specific configuration? */
8319
8318 if (only_config != -1) { 8320 if (only_config != -1) {
8319 /* Here we get only in first for loop */ 8321 /* Here we get only in first for loop */
8320 if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break; 8322 if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break;
8321 } else { 8323 } else {
8322 if (!GSM_ReadConfig(cfg, &s.Config[i], i) && i != 0) break; 8324 if (!GSM_ReadConfig(cfg, &s.Config[i], i) && i != 0) break;
8323 } 8325 }
@@ -8347,13 +8349,37 @@ int main(int argc, char *argv[])
8347 Print_Error(error); 8349 Print_Error(error);
8348 } 8350 }
8349 8351
8350 /* We wanted to read just user specified configuration. */ 8352 /* We wanted to read just user specified configuration. */
8351 if (only_config != -1) {break;} 8353 if (only_config != -1) {break;}
8352 } 8354 }
8355#if 0
8356 GSM_Config *con = &s.Config[0];
8357
8358 char* tempC;
8359 tempC = argv[argc-1]+2;
8360 if ( *tempC != 0 ) {
8361 fprintf(stderr,"Using model %s \n",tempC);
8362 strcpy(con->Model,tempC );
8363 }
8364 tempC = argv[argc-2]+2;
8365 if ( *tempC != 0 ) {
8366 fprintf(stderr,"Using device %s \n",tempC);
8367 con->Device = strdup(tempC);
8368 con->DefaultDevice = false;
8369 }
8370 tempC = argv[argc-3]+2;
8371 if ( *tempC != 0 ) {
8372 fprintf(stderr,"Using connection %s \n",tempC);
8373 con->Connection = strdup(tempC);
8374 con->DefaultConnection = false;
8375 }
8353#endif 8376#endif
8377 argc = argc-3;
8378
8379
8354 /* Do we have enough parameters? */ 8380 /* Do we have enough parameters? */
8355 if (argc == 1 + start) { 8381 if (argc == 1 + start) {
8356 HelpGeneral(); 8382 HelpGeneral();
8357 printmsg("Too few parameters!\n"); 8383 printmsg("Too few parameters!\n");
8358 exit(-2); 8384 exit(-2);
8359 } 8385 }
@@ -8366,12 +8392,13 @@ int main(int argc, char *argv[])
8366 } 8392 }
8367 8393
8368 /* Check parameters */ 8394 /* Check parameters */
8369 while (Parameters[z].Function != NULL) { 8395 while (Parameters[z].Function != NULL) {
8370 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) { 8396 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) {
8371 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) { 8397 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) {
8398 fprintf(stderr,"Executing \n");
8372 Parameters[z].Function(argc - start, argv + start); 8399 Parameters[z].Function(argc - start, argv + start);
8373 break; 8400 break;
8374 } else { 8401 } else {
8375 count_failed = true; 8402 count_failed = true;
8376 } 8403 }
8377 } 8404 }
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index 2ad1b5a..6df639f 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -32,12 +32,13 @@
32#include <qxml.h> 32#include <qxml.h>
33#include <qlabel.h> 33#include <qlabel.h>
34 34
35#include <kdebug.h> 35#include <kdebug.h>
36#include <klocale.h> 36#include <klocale.h>
37#include <kglobal.h> 37#include <kglobal.h>
38#include <kmessagebox.h>
38 39
39#include "calendar.h" 40#include "calendar.h"
40#include "alarm.h" 41#include "alarm.h"
41#include "recurrence.h" 42#include "recurrence.h"
42#include "calendarlocal.h" 43#include "calendarlocal.h"
43 44
@@ -243,12 +244,14 @@ ulong PhoneFormat::getCsumEvent( Event* event )
243 list.append( "20991231T000000" ); 244 list.append( "20991231T000000" );
244 } 245 }
245 246
246 } 247 }
247 attList << list.join(""); 248 attList << list.join("");
248 attList << event->categoriesStr(); 249 attList << event->categoriesStr();
250 //qDebug("csum cat %s", event->categoriesStr().latin1());
251
249 attList << event->secrecyStr(); 252 attList << event->secrecyStr();
250 return PhoneFormat::getCsum(attList ); 253 return PhoneFormat::getCsum(attList );
251} 254}
252ulong PhoneFormat::getCsum( const QStringList & attList) 255ulong PhoneFormat::getCsum( const QStringList & attList)
253{ 256{
254 int max = attList.count() -1; 257 int max = attList.count() -1;
@@ -266,12 +269,15 @@ ulong PhoneFormat::getCsum( const QStringList & attList)
266 mul = mul * mul; 269 mul = mul * mul;
267 add = add * mul *i*i*i; 270 add = add * mul *i*i*i;
268 cSum += add; 271 cSum += add;
269 } 272 }
270 } 273 }
271 } 274 }
275 //QString dump = attList.join(",");
276 //qDebug("csum: %s", dump.latin1());
277
272 return cSum; 278 return cSum;
273 279
274} 280}
275//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); 281//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum);
276#include <stdlib.h> 282#include <stdlib.h>
277#define DEBUGMODE false 283#define DEBUGMODE false
@@ -284,21 +290,31 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal)
284#else 290#else
285 fileName = "/tmp/kdepimtemp.vcs"; 291 fileName = "/tmp/kdepimtemp.vcs";
286#endif 292#endif
287 QString command ="./kammu --backup " + fileName + " -yes -C" + 293 QString command ="./kammu --backup " + fileName + " -yes -C" +
288 mConnection +" -D" + mDevice +" -M" + mModel; 294 mConnection +" -D" + mDevice +" -M" + mModel;
289 int ret = system ( command.latin1() ); 295 int ret = system ( command.latin1() );
290 if ( ret != 0 ) 296 if ( ret != 0 ) {
297 qDebug("Error::command returned %d", ret);
291 return false; 298 return false;
299 }
300 qDebug("Command returned %d", ret);
292 VCalFormat vfload; 301 VCalFormat vfload;
293 vfload.setLocalTime ( true ); 302 vfload.setLocalTime ( true );
303 qDebug("loading file ...");
304
294 if ( ! vfload.load( calendar, fileName ) ) 305 if ( ! vfload.load( calendar, fileName ) )
295 return false; 306 return false;
296 QPtrList<Event> er = calendar->rawEvents(); 307 QPtrList<Event> er = calendar->rawEvents();
297 Event* ev = er.first(); 308 Event* ev = er.first();
309 qDebug("reading events... ");
298 while ( ev ) { 310 while ( ev ) {
311 QStringList cat = ev->categories();
312 if ( cat.contains( "MeetingDEF" )) {
313 ev->setCategories( QStringList() );
314 }
299 int id = ev->pilotId(); 315 int id = ev->pilotId();
300 Event *event; 316 Event *event;
301 event = existingCal->event( mProfileName ,QString::number( id ) ); 317 event = existingCal->event( mProfileName ,QString::number( id ) );
302 if ( event ) { 318 if ( event ) {
303 event = (Event*)event->clone(); 319 event = (Event*)event->clone();
304 copyEvent( event, ev ); 320 copyEvent( event, ev );
@@ -312,12 +328,13 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal)
312 event->setCsum( mProfileName, QString::number( cSum )); 328 event->setCsum( mProfileName, QString::number( cSum ));
313 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 329 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
314 event->setID( mProfileName,QString::number( id ) ); 330 event->setID( mProfileName,QString::number( id ) );
315 ev = er.next(); 331 ev = er.next();
316 } 332 }
317 { 333 {
334 qDebug("reading todos... ");
318 QPtrList<Todo> tr = calendar->rawTodos(); 335 QPtrList<Todo> tr = calendar->rawTodos();
319 Todo* ev = tr.first(); 336 Todo* ev = tr.first();
320 while ( ev ) { 337 while ( ev ) {
321 338
322 QStringList cat = ev->categories(); 339 QStringList cat = ev->categories();
323 if ( cat.contains( "MeetingDEF" )) { 340 if ( cat.contains( "MeetingDEF" )) {
@@ -479,24 +496,33 @@ bool PhoneFormat::save( Calendar *calendar)
479 Todo* to = tl.first(); 496 Todo* to = tl.first();
480 while ( to ) { 497 while ( to ) {
481 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 498 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
482 calendar->deleteTodo( to ); 499 calendar->deleteTodo( to );
483 } 500 }
484 to = tl.next(); 501 to = tl.next();
485 } 502 }
486 // 3 save file 503 // 3 save file
487 VCalFormat vfsave; 504 VCalFormat vfsave;
488 vfsave.setLocalTime ( true ); 505 vfsave.setLocalTime ( true );
489 if ( ! vfsave.save( calendar, fileName ) ) 506 if ( ! vfsave.save( calendar, fileName ) )
490 return false; 507 return false;
491 // 4 call kammu 508 // 4 call kammu
492 QString command ="./kammu --restore " + fileName + " -C" + 509 QString command ="./kammu --restore " + fileName + " -C" +
493 mConnection +" -D" + mDevice +" -M" + mModel;; 510 mConnection +" -D" + mDevice +" -M" + mModel;
494 int ret = system ( command.latin1() ); 511 int ret;
495 if ( ret != 0 ) 512 while ( (ret = system ( command.latin1())) != 0 ) {
513 qDebug("Error S::command returned %d. asking users", ret);
514 int retval = KMessageBox::warningContinueCancel(0,
515 i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel"));
516 if ( retval != KMessageBox::Continue )
517 return false;
518 }
519 if ( ret != 0 ) {
520 qDebug("Error S::command returned %d", ret);
496 return false; 521 return false;
522 }
497 // 5 reread data 523 // 5 reread data
498 message = i18n(" Rereading all data ... "); 524 message = i18n(" Rereading all data ... ");
499 status.setText ( message ); 525 status.setText ( message );
500 qApp->processEvents(); 526 qApp->processEvents();
501 CalendarLocal* calendarTemp = new CalendarLocal(); 527 CalendarLocal* calendarTemp = new CalendarLocal();
502 calendarTemp->setTimeZoneId( calendar->timeZoneId()); 528 calendarTemp->setTimeZoneId( calendar->timeZoneId());
@@ -512,22 +538,28 @@ bool PhoneFormat::save( Calendar *calendar)
512 ev = er.first(); 538 ev = er.first();
513 message = i18n(" Comparing event # "); 539 message = i18n(" Comparing event # ");
514 QPtrList<Event> er1 = calendarTemp->rawEvents(); 540 QPtrList<Event> er1 = calendarTemp->rawEvents();
515 Event* ev1; 541 Event* ev1;
516 int procCount = 0; 542 int procCount = 0;
517 while ( ev ) { 543 while ( ev ) {
518 qDebug("event new ID "); 544 //qDebug("event new ID %s",ev->summary().latin1());
519 status.setText ( message + QString::number ( ++procCount ) ); 545 status.setText ( message + QString::number ( ++procCount ) );
520 qApp->processEvents(); 546 qApp->processEvents();
521 QString cSum = ev->getCsum(mProfileName); 547 uint csum;
548 csum = PhoneFormat::getCsumEvent( ev );
549 QString cSum = QString::number( csum );
550 ev->setCsum( mProfileName, cSum );
551 //qDebug("Event cSum %s ", cSum.latin1());
522 ev1 = er1.first(); 552 ev1 = er1.first();
523 while ( ev1 ) { 553 while ( ev1 ) {
524 if ( ev1->getCsum( mProfileName ) == cSum ) { 554 if ( ev1->getCsum( mProfileName ) == cSum ) {
525 er1.remove( ev1 ); 555 er1.remove( ev1 );
526 afterSave( ev ); 556 afterSave( ev );
527 ev->setID(mProfileName, ev1->getID(mProfileName) ); 557 ev->setID(mProfileName, ev1->getID(mProfileName) );
558 //qDebug("Event found on phone for %s ", ev->summary().latin1());
559
528 break; 560 break;
529 } 561 }
530 ev1 = er1.next(); 562 ev1 = er1.next();
531 } 563 }
532 if ( ! ev1 ) { 564 if ( ! ev1 ) {
533 ev->removeID(mProfileName); 565 ev->removeID(mProfileName);
@@ -535,22 +567,27 @@ bool PhoneFormat::save( Calendar *calendar)
535 } 567 }
536 568
537 569
538 ev = er.next(); 570 ev = er.next();
539 } 571 }
540 //algo 6 compare todo 572 //algo 6 compare todo
573 tl = calendar->rawTodos();
541 to = tl.first(); 574 to = tl.first();
542 procCount = 0; 575 procCount = 0;
543 QPtrList<Todo> tl1 = calendarTemp->rawTodos(); 576 QPtrList<Todo> tl1 = calendarTemp->rawTodos();
544 Todo* to1 ; 577 Todo* to1 ;
545 message = i18n(" Comparing todo # "); 578 message = i18n(" Comparing todo # ");
546 while ( to ) { 579 while ( to ) {
547 qDebug("todo2 %d ", procCount); 580 qDebug("todo2 %d ", procCount);
548 status.setText ( message + QString::number ( ++procCount ) ); 581 status.setText ( message + QString::number ( ++procCount ) );
549 qApp->processEvents(); 582 qApp->processEvents();
550 QString cSum = to->getCsum(mProfileName); 583 uint csum;
584 csum = PhoneFormat::getCsumTodo( to );
585 QString cSum = QString::number( csum );
586 to->setCsum( mProfileName, cSum );
587 qDebug("Todo cSum %s ", cSum.latin1());
551 Todo* to1 = tl1.first(); 588 Todo* to1 = tl1.first();
552 while ( to1 ) { 589 while ( to1 ) {
553 if ( to1->getCsum( mProfileName ) == cSum ) { 590 if ( to1->getCsum( mProfileName ) == cSum ) {
554 tl1.remove( to1 ); 591 tl1.remove( to1 );
555 afterSave( to ); 592 afterSave( to );
556 to->setID(mProfileName, to1->getID(mProfileName) ); 593 to->setID(mProfileName, to1->getID(mProfileName) );