summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-06 00:33:20 (UTC)
committer zautrix <zautrix>2004-10-06 00:33:20 (UTC)
commit07fa092b413b7cde1bd4fc797ce0b30adcb8668d (patch) (unidiff)
tree34b54fe692412be32d26bd85dbbb77bafcfe8efa
parent191ced43b27c047b0a39f0acdc8ba1f8a58817df (diff)
downloadkdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.zip
kdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.tar.gz
kdepimpi-07fa092b413b7cde1bd4fc797ce0b30adcb8668d.tar.bz2
export to phone added
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koprefs.cpp6
-rw-r--r--korganizer/koprefs.h3
-rw-r--r--korganizer/mainwindow.cpp134
-rw-r--r--korganizer/mainwindow.h1
-rw-r--r--libkcal/phoneformat.cpp66
-rw-r--r--libkcal/phoneformat.h2
6 files changed, 187 insertions, 25 deletions
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index c28da9a..716a125 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -77,6 +77,12 @@ KOPrefs::KOPrefs() :
77 mJornalViewFont = QFont("helvetica",12); 77 mJornalViewFont = QFont("helvetica",12);
78 78
79 KPrefs::setCurrentGroup("General"); 79 KPrefs::setCurrentGroup("General");
80
81
82 addItemString("Ex2PhoneDevice",&mEx2PhoneDevice,"/dev/ircomm");
83 addItemString("Ex2PhoneConnection",&mEx2PhoneConnection,"irda");
84 addItemString("Ex2PhoneModel",&mEx2PhoneModel,"6310i");
85
80 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false); 86 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false);
81 87
82 addItemBool("ShowIconNewTodo",&mShowIconNewTodo,true); 88 addItemBool("ShowIconNewTodo",&mShowIconNewTodo,true);
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index d9ac851..a1ba8b3 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -210,6 +210,9 @@ class KOPrefs : public KPimPrefs
210 QString mPhoneDevice; 210 QString mPhoneDevice;
211 QString mPhoneConnection; 211 QString mPhoneConnection;
212 QString mPhoneModel; 212 QString mPhoneModel;
213 QString mEx2PhoneDevice;
214 QString mEx2PhoneConnection;
215 QString mEx2PhoneModel;
213 216
214 int mLastSyncTime; 217 int mLastSyncTime;
215 int mSyncAlgoPrefs; 218 int mSyncAlgoPrefs;
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index de94b8c..ef73a78 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -13,6 +13,8 @@
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h>
17#include <qcheckbox.h>
16#include <qmap.h> 18#include <qmap.h>
17#include <qwmatrix.h> 19#include <qwmatrix.h>
18#include <qtextbrowser.h> 20#include <qtextbrowser.h>
@@ -35,6 +37,7 @@
35#endif 37#endif
36#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
37#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h>
38#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
39#include <libkcal/kincidenceformatter.h> 42#include <libkcal/kincidenceformatter.h>
40#include <libkdepim/kpimglobalprefs.h> 43#include <libkdepim/kpimglobalprefs.h>
@@ -66,6 +69,55 @@ using namespace KCal;
66#endif 69#endif
67#include "mainwindow.h" 70#include "mainwindow.h"
68 71
72class KOex2phonePrefs : public QDialog
73{
74 public:
75 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
76 QDialog( parent, name, true )
77 {
78 setCaption( i18n("Export to phone options") );
79 QVBoxLayout* lay = new QVBoxLayout( this );
80 lay->setSpacing( 3 );
81 lay->setMargin( 3 );
82
83 lay->addWidget(new QLabel( i18n("Please read phone sync howto to\nknow more about the connection settings."), this ) );
84 QHBox* temphb;
85 temphb = new QHBox( this );
86 new QLabel( i18n("I/O device: "), temphb );
87 mPhoneDevice = new QLineEdit( temphb);
88 lay->addWidget( temphb );
89 temphb = new QHBox( this );
90 new QLabel( i18n("Connection: "), temphb );
91 mPhoneConnection = new QLineEdit( temphb);
92 lay->addWidget( temphb );
93 temphb = new QHBox( this );
94 new QLabel( i18n("Model(opt.): "), temphb );
95 mPhoneModel = new QLineEdit( temphb);
96 lay->addWidget( temphb );
97 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
98 mWriteBackFuture->setChecked( true );
99 lay->addWidget( mWriteBackFuture );
100 temphb = new QHBox( this );
101 new QLabel( i18n("Max. weeks in future: ") , temphb );
102 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
103 mWriteBackFutureWeeks->setValue( 8 );
104 lay->addWidget( temphb );
105 QPushButton * ok = new QPushButton( i18n("Export!"), this );
106 lay->addWidget( ok );
107 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
108 lay->addWidget( cancel );
109 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
110 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
111 resize( 220, 220 );
112
113 }
114
115public:
116 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
117 QCheckBox* mWriteBackFuture;
118 QSpinBox* mWriteBackFutureWeeks;
119};
120
69int globalFlagBlockStartup; 121int globalFlagBlockStartup;
70MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 122MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
71 QMainWindow( parent, name ) 123 QMainWindow( parent, name )
@@ -653,6 +705,15 @@ void MainWindow::initActions()
653 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 705 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
654 this ); 706 this );
655 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 707 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
708
709
710 //LR
711 QPopupMenu *ex2phone = new QPopupMenu( this );
712 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
713 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
714 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
715 importMenu->insertItem( i18n("Export to phone"), ex2phone );
716
656 importMenu->insertSeparator(); 717 importMenu->insertSeparator();
657 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 718 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
658 this ); 719 this );
@@ -1087,6 +1148,78 @@ void MainWindow::slotSyncMenu( int action )
1087 delete temp; 1148 delete temp;
1088 mBlockSaveFlag = false; 1149 mBlockSaveFlag = false;
1089} 1150}
1151void MainWindow::exportToPhone( int mode )
1152{
1153
1154 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1155 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1156 KOex2phonePrefs ex2phone;
1157 ex2phone.mPhoneConnection->setText( KOPrefs::instance()->mEx2PhoneConnection );
1158 ex2phone.mPhoneDevice->setText( KOPrefs::instance()->mEx2PhoneDevice );
1159 ex2phone.mPhoneModel->setText( KOPrefs::instance()->mEx2PhoneModel );
1160
1161 if ( !ex2phone.exec() ) {
1162 return;
1163 }
1164 KOPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1165 KOPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1166 KOPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1167
1168 int inFuture = 0;
1169 if ( ex2phone.mWriteBackFuture->isChecked() )
1170 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1171 QPtrList<Incidence> delSel;
1172 if ( mode == 1 )
1173 delSel = mCalendar->rawIncidences();
1174 if ( mode == 2 )
1175 delSel = mCalendar->incidences();
1176 CalendarLocal* cal = new CalendarLocal();
1177 cal->setLocalTime();
1178 Incidence *incidence = delSel.first();
1179 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1180 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1181 while ( incidence ) {
1182 if ( incidence->type() != "journal" ) {
1183 bool add = true;
1184 if ( inFuture ) {
1185 QDateTime dt;
1186 if ( incidence->type() == "Todo" ) {
1187 Todo * t = (Todo*)incidence;
1188 if ( t->hasDueDate() )
1189 dt = t->dtDue();
1190 else
1191 dt = cur.addSecs( 62 );
1192 }
1193 else {
1194 bool ok;
1195 dt = incidence->getNextOccurence( cur, &ok );
1196 if ( !ok )
1197 dt = cur.addSecs( -62 );
1198 }
1199 if ( dt < cur || dt > end ) {
1200 add = false;
1201 }
1202 }
1203 if ( add ) {
1204 Incidence *in = incidence->clone();
1205 cal->addIncidence( in );
1206 }
1207 }
1208 incidence = delSel.next();
1209 }
1210 PhoneFormat::writeConfig( KOPrefs::instance()->mEx2PhoneDevice,
1211 KOPrefs::instance()->mEx2PhoneConnection,
1212 KOPrefs::instance()->mEx2PhoneModel );
1213
1214 setCaption( i18n("Writing to phone..."));
1215 if ( PhoneFormat::writeToPhone( cal ) )
1216 setCaption( i18n("Export to phone successful!"));
1217 else
1218 setCaption( i18n("Error exporting to phone!"));
1219 delete cal;
1220}
1221
1222
1090void MainWindow::setDefaultPreferences() 1223void MainWindow::setDefaultPreferences()
1091{ 1224{
1092 KOPrefs *p = KOPrefs::instance(); 1225 KOPrefs *p = KOPrefs::instance();
@@ -1094,6 +1227,7 @@ void MainWindow::setDefaultPreferences()
1094 p->mCompactDialogs = true; 1227 p->mCompactDialogs = true;
1095 p->mConfirm = true; 1228 p->mConfirm = true;
1096 // p->mEnableQuickTodo = false; 1229 // p->mEnableQuickTodo = false;
1230
1097} 1231}
1098 1232
1099QString MainWindow::resourcePath() 1233QString MainWindow::resourcePath()
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 7b24b88..74c7f45 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -144,6 +144,7 @@ class MainWindow : public QMainWindow
144 void exportVCalendar(); 144 void exportVCalendar();
145 void fillFilterMenu(); 145 void fillFilterMenu();
146 void selectFilter( int ); 146 void selectFilter( int );
147 void exportToPhone( int );
147 148
148 void slotSyncMenu( int ); 149 void slotSyncMenu( int );
149 void confSync(); 150 void confSync();
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index 29c1ae6..b2a62b1 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -84,8 +84,19 @@ public:
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 writeConfig( device, connection, model );
88}
87 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;
@@ -176,10 +187,7 @@ PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection,
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)
@@ -569,6 +577,35 @@ void PhoneFormat::afterSave( Incidence* inc)
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 );
@@ -583,11 +620,6 @@ bool PhoneFormat::save( Calendar *calendar)
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();
@@ -614,24 +646,8 @@ bool PhoneFormat::save( Calendar *calendar)
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;
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; 650 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 ... ");
diff --git a/libkcal/phoneformat.h b/libkcal/phoneformat.h
index 2d1ff79..61e8160 100644
--- a/libkcal/phoneformat.h
+++ b/libkcal/phoneformat.h
@@ -48,6 +48,8 @@ class PhoneFormat : public QObject {
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 );