summaryrefslogtreecommitdiffabout
path: root/libkcal
authorzautrix <zautrix>2004-10-06 00:33:20 (UTC)
committer zautrix <zautrix>2004-10-06 00:33:20 (UTC)
commit07fa092b413b7cde1bd4fc797ce0b30adcb8668d (patch) (unidiff)
tree34b54fe692412be32d26bd85dbbb77bafcfe8efa /libkcal
parent191ced43b27c047b0a39f0acdc8ba1f8a58817df (diff)
downloadkdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.zip
kdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.tar.gz
kdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.tar.bz2
export to phone added
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/phoneformat.cpp68
-rw-r--r--libkcal/phoneformat.h2
2 files changed, 44 insertions, 26 deletions
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index 29c1ae6..b2a62b1 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -75,26 +75,37 @@ public:
75 } 75 }
76 return datestr + timestr; 76 return datestr + timestr;
77 } 77 }
78 78
79 79
80}; 80};
81 81
82 82
83 83
84PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model ) 84PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model )
85{ 85{
86 mProfileName = profileName; 86 mProfileName = profileName;
87 87 writeConfig( device, connection, model );
88}
89
90PhoneFormat::~PhoneFormat()
91{
92}
93void PhoneFormat::writeConfig( QString device, QString connection, QString model )
94{
95#ifdef _WIN32_
96 QString fileName = qApp->applicationDirPath () +"\\gammurc";
97#else
88 QString fileName = QDir::homeDirPath() +"/.gammurc"; 98 QString fileName = QDir::homeDirPath() +"/.gammurc";
99#endif
89 //qDebug("save %d ", load ); 100 //qDebug("save %d ", load );
90 QString content; 101 QString content;
91 bool write = false; 102 bool write = false;
92 bool addPort = true, addConnection = true, addModel = true; 103 bool addPort = true, addConnection = true, addModel = true;
93 QFile file( fileName ); 104 QFile file( fileName );
94 if ( QFile::exists( fileName) ) { 105 if ( QFile::exists( fileName) ) {
95 if (!file.open( IO_ReadOnly ) ) { 106 if (!file.open( IO_ReadOnly ) ) {
96 qDebug("Error: cannot open %s ", fileName.latin1() ); 107 qDebug("Error: cannot open %s ", fileName.latin1() );
97 return; 108 return;
98 } 109 }
99 QString line; 110 QString line;
100 while ( file.readLine( line, 1024 ) > 0 ) { 111 while ( file.readLine( line, 1024 ) > 0 ) {
@@ -167,28 +178,25 @@ PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection,
167 content += "\n"; 178 content += "\n";
168 } 179 }
169 if ( write ) { 180 if ( write ) {
170 if (!file.open( IO_WriteOnly ) ) { 181 if (!file.open( IO_WriteOnly ) ) {
171 qDebug("Error: cannot write file %s ", fileName.latin1() ); 182 qDebug("Error: cannot write file %s ", fileName.latin1() );
172 return; 183 return;
173 } 184 }
174 qDebug("Writing file %s ", fileName.latin1() ); 185 qDebug("Writing file %s ", fileName.latin1() );
175 QTextStream ts( &file ); 186 QTextStream ts( &file );
176 ts << content ; 187 ts << content ;
177 file.close(); 188 file.close();
178 } 189 }
179}
180 190
181PhoneFormat::~PhoneFormat()
182{
183} 191}
184#if 0 192#if 0
185int PhoneFormat::initDevice(GSM_StateMachine *s) 193int PhoneFormat::initDevice(GSM_StateMachine *s)
186{ 194{
187 GSM_ReadConfig(NULL, &s->Config[0], 0); 195 GSM_ReadConfig(NULL, &s->Config[0], 0);
188 s->ConfigNum = 1; 196 s->ConfigNum = 1;
189 GSM_Config *cfg = &s->Config[0]; 197 GSM_Config *cfg = &s->Config[0];
190 if ( ! mConnection.isEmpty() ) { 198 if ( ! mConnection.isEmpty() ) {
191 cfg->Connection = strdup(mConnection.latin1()); 199 cfg->Connection = strdup(mConnection.latin1());
192 cfg->DefaultConnection = false; 200 cfg->DefaultConnection = false;
193 qDebug("Connection set %s ", cfg->Connection ); 201 qDebug("Connection set %s ", cfg->Connection );
194 202
@@ -560,43 +568,67 @@ void PhoneFormat::afterSave( Incidence* inc)
560{ 568{
561 uint csum; 569 uint csum;
562 inc->removeID( mProfileName ); 570 inc->removeID( mProfileName );
563 if ( inc->type() == "Event") 571 if ( inc->type() == "Event")
564 csum = PhoneFormat::getCsumEvent( (Event*) inc ); 572 csum = PhoneFormat::getCsumEvent( (Event*) inc );
565 else 573 else
566 csum = PhoneFormat::getCsumTodo( (Todo*) inc ); 574 csum = PhoneFormat::getCsumTodo( (Todo*) inc );
567 inc->setCsum( mProfileName, QString::number( csum )); 575 inc->setCsum( mProfileName, QString::number( csum ));
568 576
569 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 577 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
570 578
571} 579}
580
581bool PhoneFormat::writeToPhone( Calendar * calendar)
582{
583#ifdef _WIN32_
584 QString fileName = locateLocal("tmp", "tempfile.vcs");
585#else
586 QString fileName = "/tmp/kdepimtemp.vcs";
587#endif
588
589 VCalFormat vfsave;
590 vfsave.setLocalTime ( true );
591 if ( ! vfsave.save( calendar, fileName ) )
592 return false;
593 // 4 call kammu
594#ifdef DESKTOP_VERSION
595 QString command ="./kammu --restore " + fileName ;
596#else
597 QString command ="kammu --restore " + fileName ;
598#endif
599 int ret;
600 while ( (ret = system ( command.latin1())) != 0 ) {
601 qDebug("Error S::command returned %d. asking users", ret);
602 int retval = KMessageBox::warningContinueCancel(0,
603 i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone access"),i18n("Retry"),i18n("Cancel"));
604 if ( retval != KMessageBox::Continue )
605 return false;
606 }
607 return true;
608}
572bool PhoneFormat::save( Calendar *calendar) 609bool PhoneFormat::save( Calendar *calendar)
573{ 610{
574 QLabel status ( i18n(" Opening device ..."), 0 ); 611 QLabel status ( i18n(" Opening device ..."), 0 );
575 int w = status.sizeHint().width()+20 ; 612 int w = status.sizeHint().width()+20 ;
576 if ( w < 200 ) w = 230; 613 if ( w < 200 ) w = 230;
577 int h = status.sizeHint().height()+20 ; 614 int h = status.sizeHint().height()+20 ;
578 int dw = QApplication::desktop()->width(); 615 int dw = QApplication::desktop()->width();
579 int dh = QApplication::desktop()->height(); 616 int dh = QApplication::desktop()->height();
580 status.setCaption(i18n("Writing to phone...") ); 617 status.setCaption(i18n("Writing to phone...") );
581 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 618 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
582 status.show(); 619 status.show();
583 status.raise(); 620 status.raise();
584 qApp->processEvents(); 621 qApp->processEvents();
585 QString message; 622 QString message;
586#ifdef _WIN32_
587 QString fileName = locateLocal("tmp", "tempfile.vcs");
588#else
589 QString fileName = "/tmp/kdepimtemp.vcs";
590#endif
591 623
592 // 1 remove events which should be deleted 624 // 1 remove events which should be deleted
593 QPtrList<Event> er = calendar->rawEvents(); 625 QPtrList<Event> er = calendar->rawEvents();
594 Event* ev = er.first(); 626 Event* ev = er.first();
595 while ( ev ) { 627 while ( ev ) {
596 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 628 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
597 calendar->deleteEvent( ev ); 629 calendar->deleteEvent( ev );
598 } else { 630 } else {
599 631
600 } 632 }
601 ev = er.next(); 633 ev = er.next();
602 } 634 }
@@ -605,42 +637,26 @@ bool PhoneFormat::save( Calendar *calendar)
605 Todo* to = tl.first(); 637 Todo* to = tl.first();
606 while ( to ) { 638 while ( to ) {
607 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 639 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
608 calendar->deleteTodo( to ); 640 calendar->deleteTodo( to );
609 } else { 641 } else {
610 if ( to->isCompleted()) { 642 if ( to->isCompleted()) {
611 calendar->deleteTodo( to ); 643 calendar->deleteTodo( to );
612 } 644 }
613 } 645 }
614 to = tl.next(); 646 to = tl.next();
615 } 647 }
616 // 3 save file 648 // 3 save file
617 VCalFormat vfsave; 649 if ( !writeToPhone( calendar ) )
618 vfsave.setLocalTime ( true );
619 if ( ! vfsave.save( calendar, fileName ) )
620 return false; 650 return false;
621 // 4 call kammu
622#ifdef DESKTOP_VERSION
623 QString command ="./kammu --restore " + fileName ;
624#else
625 QString command ="kammu --restore " + fileName ;
626#endif
627 int ret;
628 while ( (ret = system ( command.latin1())) != 0 ) {
629 qDebug("Error S::command returned %d. asking users", ret);
630 int retval = KMessageBox::warningContinueCancel(0,
631 i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel"));
632 if ( retval != KMessageBox::Continue )
633 return false;
634 }
635 651
636 // 5 reread data 652 // 5 reread data
637 message = i18n(" Rereading all data ... "); 653 message = i18n(" Rereading all data ... ");
638 status.setText ( message ); 654 status.setText ( message );
639 qApp->processEvents(); 655 qApp->processEvents();
640 CalendarLocal* calendarTemp = new CalendarLocal(); 656 CalendarLocal* calendarTemp = new CalendarLocal();
641 calendarTemp->setTimeZoneId( calendar->timeZoneId()); 657 calendarTemp->setTimeZoneId( calendar->timeZoneId());
642 if ( ! load( calendarTemp,calendar) ){ 658 if ( ! load( calendarTemp,calendar) ){
643 qDebug("error reloading calendar "); 659 qDebug("error reloading calendar ");
644 delete calendarTemp; 660 delete calendarTemp;
645 return false; 661 return false;
646 } 662 }
diff --git a/libkcal/phoneformat.h b/libkcal/phoneformat.h
index 2d1ff79..61e8160 100644
--- a/libkcal/phoneformat.h
+++ b/libkcal/phoneformat.h
@@ -39,23 +39,25 @@ class PhoneFormat : public QObject {
39 public: 39 public:
40 /** Create new iCalendar format. */ 40 /** Create new iCalendar format. */
41 PhoneFormat(QString profileName, QString device,QString connection, QString model); 41 PhoneFormat(QString profileName, QString device,QString connection, QString model);
42 virtual ~PhoneFormat(); 42 virtual ~PhoneFormat();
43 43
44 bool load( Calendar * ,Calendar * ); 44 bool load( Calendar * ,Calendar * );
45 bool save( Calendar * ); 45 bool save( Calendar * );
46 bool fromString( Calendar *, const QString & ); 46 bool fromString( Calendar *, const QString & );
47 QString toString( Calendar * ); 47 QString toString( Calendar * );
48 static ulong getCsum( const QStringList & ); 48 static ulong getCsum( const QStringList & );
49 static ulong getCsumTodo( Todo* to ); 49 static ulong getCsumTodo( Todo* to );
50 static ulong getCsumEvent( Event* ev ); 50 static ulong getCsumEvent( Event* ev );
51 static void writeConfig( QString device,QString connection, QString model );
52 static bool writeToPhone( Calendar * );
51 private: 53 private:
52 void copyEvent( Event* to, Event* from ); 54 void copyEvent( Event* to, Event* from );
53 void copyTodo( Todo* to, Todo* from ); 55 void copyTodo( Todo* to, Todo* from );
54 //int initDevice(GSM_StateMachine *s); 56 //int initDevice(GSM_StateMachine *s);
55 QString mProfileName; 57 QString mProfileName;
56 void afterSave( Incidence* ); 58 void afterSave( Incidence* );
57}; 59};
58 60
59} 61}
60 62
61#endif 63#endif