-rw-r--r-- | korganizer/koprefs.cpp | 6 | ||||
-rw-r--r-- | korganizer/koprefs.h | 3 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 134 | ||||
-rw-r--r-- | korganizer/mainwindow.h | 1 | ||||
-rw-r--r-- | libkcal/phoneformat.cpp | 68 | ||||
-rw-r--r-- | libkcal/phoneformat.h | 2 |
6 files changed, 188 insertions, 26 deletions
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index c28da9a..716a125 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp | |||
@@ -56,48 +56,54 @@ static KStaticDeleter<KOPrefs> insd; | |||
56 | 56 | ||
57 | KOPrefs::KOPrefs() : | 57 | KOPrefs::KOPrefs() : |
58 | KPimPrefs("korganizerrc") | 58 | KPimPrefs("korganizerrc") |
59 | { | 59 | { |
60 | mCategoryColors.setAutoDelete(true); | 60 | mCategoryColors.setAutoDelete(true); |
61 | mLocaleDict = 0; | 61 | mLocaleDict = 0; |
62 | fillMailDefaults(); | 62 | fillMailDefaults(); |
63 | mDefaultCategoryColor = QColor(175,210,255);//196,196,196); | 63 | mDefaultCategoryColor = QColor(175,210,255);//196,196,196); |
64 | QColor defaultHolidayColor = QColor(255,0,0); | 64 | QColor defaultHolidayColor = QColor(255,0,0); |
65 | QColor defaultHighlightColor = QColor(129,112,255);//64,64,255); | 65 | QColor defaultHighlightColor = QColor(129,112,255);//64,64,255); |
66 | QColor defaultAgendaBgColor = QColor(239,241,169);//128,128,128); | 66 | QColor defaultAgendaBgColor = QColor(239,241,169);//128,128,128); |
67 | QColor defaultWorkingHoursColor = QColor(170,223,150);//160,160,160); | 67 | QColor defaultWorkingHoursColor = QColor(170,223,150);//160,160,160); |
68 | QColor defaultTodoDueTodayColor = QColor(255,220,100); | 68 | QColor defaultTodoDueTodayColor = QColor(255,220,100); |
69 | QColor defaultTodoOverdueColor = QColor(255,153,125); | 69 | QColor defaultTodoOverdueColor = QColor(255,153,125); |
70 | 70 | ||
71 | mTimeBarFont = QFont("helvetica",10);//,QFont::Bold); | 71 | mTimeBarFont = QFont("helvetica",10);//,QFont::Bold); |
72 | mDefaultViewFont = QFont("helvetica",10); | 72 | mDefaultViewFont = QFont("helvetica",10); |
73 | mDefaultMonthViewFont = QFont("helvetica",8); | 73 | mDefaultMonthViewFont = QFont("helvetica",8); |
74 | mMarcusBainsFont= QFont("helvetica",10); | 74 | mMarcusBainsFont= QFont("helvetica",10); |
75 | mDateNavigatorFont= QFont("helvetica",10, QFont::Bold); | 75 | mDateNavigatorFont= QFont("helvetica",10, QFont::Bold); |
76 | mEditBoxFont = QFont("helvetica",12); | 76 | mEditBoxFont = QFont("helvetica",12); |
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); |
83 | addItemBool("ShowIconNewEvent",&mShowIconNewEvent,true); | 89 | addItemBool("ShowIconNewEvent",&mShowIconNewEvent,true); |
84 | addItemBool("ShowIconSearch",&mShowIconSearch,true); | 90 | addItemBool("ShowIconSearch",&mShowIconSearch,true); |
85 | addItemBool("ShowIconList",&mShowIconList,true); | 91 | addItemBool("ShowIconList",&mShowIconList,true); |
86 | addItemBool("ShowIconDay1",&mShowIconDay1,true); | 92 | addItemBool("ShowIconDay1",&mShowIconDay1,true); |
87 | addItemBool("ShowIconDay5",&mShowIconDay5,true); | 93 | addItemBool("ShowIconDay5",&mShowIconDay5,true); |
88 | addItemBool("ShowIconDay7",&mShowIconDay7,true); | 94 | addItemBool("ShowIconDay7",&mShowIconDay7,true); |
89 | addItemBool("ShowIconMonth",&mShowIconMonth,true); | 95 | addItemBool("ShowIconMonth",&mShowIconMonth,true); |
90 | addItemBool("ShowIconTodoview",&mShowIconTodoview,true); | 96 | addItemBool("ShowIconTodoview",&mShowIconTodoview,true); |
91 | addItemBool("ShowIconBackFast",&mShowIconBackFast,true); | 97 | addItemBool("ShowIconBackFast",&mShowIconBackFast,true); |
92 | addItemBool("ShowIconBack",&mShowIconBack,true); | 98 | addItemBool("ShowIconBack",&mShowIconBack,true); |
93 | addItemBool("ShowIconToday",&mShowIconToday,true); | 99 | addItemBool("ShowIconToday",&mShowIconToday,true); |
94 | addItemBool("ShowIconForward",&mShowIconForward,true); | 100 | addItemBool("ShowIconForward",&mShowIconForward,true); |
95 | addItemBool("ShowIconForwardFast",&mShowIconForwardFast,true); | 101 | addItemBool("ShowIconForwardFast",&mShowIconForwardFast,true); |
96 | addItemBool("ShowIconWhatsThis",&mShowIconWhatsThis,false); | 102 | addItemBool("ShowIconWhatsThis",&mShowIconWhatsThis,false); |
97 | addItemBool("ShowIconNextDays",&mShowIconNextDays,true); | 103 | addItemBool("ShowIconNextDays",&mShowIconNextDays,true); |
98 | addItemBool("ShowIconNext",&mShowIconNext,true); | 104 | addItemBool("ShowIconNext",&mShowIconNext,true); |
99 | addItemBool("ShowIconJournal",&mShowIconJournal,true); | 105 | addItemBool("ShowIconJournal",&mShowIconJournal,true); |
100 | addItemBool("ShowIconStretch",&mShowIconStretch,true); | 106 | addItemBool("ShowIconStretch",&mShowIconStretch,true); |
101 | addItemBool("LanguageChanged",&mLanguageChanged,false); | 107 | addItemBool("LanguageChanged",&mLanguageChanged,false); |
102 | 108 | ||
103 | addItemBool("AskForQuit",&mAskForQuit,false); | 109 | addItemBool("AskForQuit",&mAskForQuit,false); |
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index d9ac851..a1ba8b3 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h | |||
@@ -189,48 +189,51 @@ class KOPrefs : public KPimPrefs | |||
189 | bool mShowIconStretch; | 189 | bool mShowIconStretch; |
190 | 190 | ||
191 | bool mToolBarHor; | 191 | bool mToolBarHor; |
192 | bool mToolBarUp; | 192 | bool mToolBarUp; |
193 | bool mToolBarMiniIcons; | 193 | bool mToolBarMiniIcons; |
194 | 194 | ||
195 | bool mAskForQuit; | 195 | bool mAskForQuit; |
196 | bool mUsePassWd; | 196 | bool mUsePassWd; |
197 | bool mWriteBackFile; | 197 | bool mWriteBackFile; |
198 | int mWriteBackInFuture; | 198 | int mWriteBackInFuture; |
199 | bool mAskForPreferences; | 199 | bool mAskForPreferences; |
200 | bool mShowSyncSummary; | 200 | bool mShowSyncSummary; |
201 | bool mShowSyncEvents; | 201 | bool mShowSyncEvents; |
202 | bool mShowTodoInAgenda; | 202 | bool mShowTodoInAgenda; |
203 | bool mWriteBackExistingOnly; | 203 | bool mWriteBackExistingOnly; |
204 | 204 | ||
205 | QString mRemoteIP; | 205 | QString mRemoteIP; |
206 | QString mRemoteUser; | 206 | QString mRemoteUser; |
207 | QString mRemotePassWd; | 207 | QString mRemotePassWd; |
208 | QString mRemoteFile; | 208 | QString mRemoteFile; |
209 | QString mLocalTempFile; | 209 | QString mLocalTempFile; |
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; |
216 | int mRingSyncAlgoPrefs; | 219 | int mRingSyncAlgoPrefs; |
217 | QStringList mSyncProfileNames; | 220 | QStringList mSyncProfileNames; |
218 | QStringList mExternSyncProfiles; | 221 | QStringList mExternSyncProfiles; |
219 | QString mLocalMachineName; | 222 | QString mLocalMachineName; |
220 | void setCategoryColor(QString cat,const QColor & color); | 223 | void setCategoryColor(QString cat,const QColor & color); |
221 | QColor *categoryColor(QString cat); | 224 | QColor *categoryColor(QString cat); |
222 | 225 | ||
223 | QString mArchiveFile; | 226 | QString mArchiveFile; |
224 | QString mHtmlExportFile; | 227 | QString mHtmlExportFile; |
225 | bool mHtmlWithSave; | 228 | bool mHtmlWithSave; |
226 | 229 | ||
227 | QStringList mSelectedPlugins; | 230 | QStringList mSelectedPlugins; |
228 | 231 | ||
229 | QString mLastImportFile; | 232 | QString mLastImportFile; |
230 | QString mLastVcalFile; | 233 | QString mLastVcalFile; |
231 | QString mLastSaveFile; | 234 | QString mLastSaveFile; |
232 | QString mLastLoadFile; | 235 | QString mLastLoadFile; |
233 | QString mLastSyncedLocalFile; | 236 | QString mLastSyncedLocalFile; |
234 | 237 | ||
235 | 238 | ||
236 | QString mDefaultAlarmFile; | 239 | QString mDefaultAlarmFile; |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index de94b8c..ef73a78 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1,92 +1,144 @@ | |||
1 | #include <stdlib.h> | 1 | #include <stdlib.h> |
2 | 2 | ||
3 | #include <qaction.h> | 3 | #include <qaction.h> |
4 | #include <qpopupmenu.h> | 4 | #include <qpopupmenu.h> |
5 | #include <qpainter.h> | 5 | #include <qpainter.h> |
6 | #include <qwhatsthis.h> | 6 | #include <qwhatsthis.h> |
7 | #include <qpushbutton.h> | 7 | #include <qpushbutton.h> |
8 | #include <qmessagebox.h> | 8 | #include <qmessagebox.h> |
9 | #include <qlineedit.h> | 9 | #include <qlineedit.h> |
10 | #include <qtextcodec.h> | 10 | #include <qtextcodec.h> |
11 | #include <qfile.h> | 11 | #include <qfile.h> |
12 | #include <qdir.h> | 12 | #include <qdir.h> |
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> |
19 | #include <qtextstream.h> | 21 | #include <qtextstream.h> |
20 | #ifndef DESKTOP_VERSION | 22 | #ifndef DESKTOP_VERSION |
21 | #include <qpe/global.h> | 23 | #include <qpe/global.h> |
22 | #include <qpe/qpemenubar.h> | 24 | #include <qpe/qpemenubar.h> |
23 | #include <qpe/qpetoolbar.h> | 25 | #include <qpe/qpetoolbar.h> |
24 | #include <qpe/resource.h> | 26 | #include <qpe/resource.h> |
25 | #include <qpe/qpeapplication.h> | 27 | #include <qpe/qpeapplication.h> |
26 | #include <qtopia/alarmserver.h> | 28 | #include <qtopia/alarmserver.h> |
27 | #include <qtopia/qcopenvelope_qws.h> | 29 | #include <qtopia/qcopenvelope_qws.h> |
28 | #include <unistd.h> // for sleep | 30 | #include <unistd.h> // for sleep |
29 | #else | 31 | #else |
30 | #include <qmenubar.h> | 32 | #include <qmenubar.h> |
31 | #include <qtoolbar.h> | 33 | #include <qtoolbar.h> |
32 | #include <qapplication.h> | 34 | #include <qapplication.h> |
33 | //#include <resource.h> | 35 | //#include <resource.h> |
34 | 36 | ||
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> |
41 | 44 | ||
42 | #include "calendarview.h" | 45 | #include "calendarview.h" |
43 | #include "koviewmanager.h" | 46 | #include "koviewmanager.h" |
44 | #include "datenavigator.h" | 47 | #include "datenavigator.h" |
45 | #include "koagendaview.h" | 48 | #include "koagendaview.h" |
46 | #include "koagenda.h" | 49 | #include "koagenda.h" |
47 | #include "kodialogmanager.h" | 50 | #include "kodialogmanager.h" |
48 | #include "kdialogbase.h" | 51 | #include "kdialogbase.h" |
49 | #include "kapplication.h" | 52 | #include "kapplication.h" |
50 | #include "kofilterview.h" | 53 | #include "kofilterview.h" |
51 | #include "kstandarddirs.h" | 54 | #include "kstandarddirs.h" |
52 | #include "koprefs.h" | 55 | #include "koprefs.h" |
53 | #include "kfiledialog.h" | 56 | #include "kfiledialog.h" |
54 | #include "koglobals.h" | 57 | #include "koglobals.h" |
55 | #include "kglobal.h" | 58 | #include "kglobal.h" |
56 | #include "klocale.h" | 59 | #include "klocale.h" |
57 | #include "kconfig.h" | 60 | #include "kconfig.h" |
58 | #include "simplealarmclient.h" | 61 | #include "simplealarmclient.h" |
59 | #include "externalapphandler.h" | 62 | #include "externalapphandler.h" |
60 | 63 | ||
61 | using namespace KCal; | 64 | using namespace KCal; |
62 | #ifndef _WIN32_ | 65 | #ifndef _WIN32_ |
63 | #include <unistd.h> | 66 | #include <unistd.h> |
64 | #else | 67 | #else |
65 | #include "koimportoldialog.h" | 68 | #include "koimportoldialog.h" |
66 | #endif | 69 | #endif |
67 | #include "mainwindow.h" | 70 | #include "mainwindow.h" |
68 | 71 | ||
72 | class 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 | |||
115 | public: | ||
116 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; | ||
117 | QCheckBox* mWriteBackFuture; | ||
118 | QSpinBox* mWriteBackFutureWeeks; | ||
119 | }; | ||
120 | |||
69 | int globalFlagBlockStartup; | 121 | int globalFlagBlockStartup; |
70 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : | 122 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : |
71 | QMainWindow( parent, name ) | 123 | QMainWindow( parent, name ) |
72 | { | 124 | { |
73 | mPassWordPiSync = "abc"; | 125 | mPassWordPiSync = "abc"; |
74 | #ifdef DESKTOP_VERSION | 126 | #ifdef DESKTOP_VERSION |
75 | setFont( QFont("Arial"), 14 ); | 127 | setFont( QFont("Arial"), 14 ); |
76 | #endif | 128 | #endif |
77 | mSyncActionDialog = 0; | 129 | mSyncActionDialog = 0; |
78 | mServerSocket = 0; | 130 | mServerSocket = 0; |
79 | mClosed = false; | 131 | mClosed = false; |
80 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; | 132 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; |
81 | QString confFile = locateLocal("config","korganizerrc"); | 133 | QString confFile = locateLocal("config","korganizerrc"); |
82 | QFileInfo finf ( confFile ); | 134 | QFileInfo finf ( confFile ); |
83 | bool showWarning = !finf.exists(); | 135 | bool showWarning = !finf.exists(); |
84 | setIcon(SmallIcon( "ko24" ) ); | 136 | setIcon(SmallIcon( "ko24" ) ); |
85 | mBlockAtStartup = true; | 137 | mBlockAtStartup = true; |
86 | mFlagKeyPressed = false; | 138 | mFlagKeyPressed = false; |
87 | setCaption("KOrganizer/Pi"); | 139 | setCaption("KOrganizer/Pi"); |
88 | KOPrefs *p = KOPrefs::instance(); | 140 | KOPrefs *p = KOPrefs::instance(); |
89 | KPimGlobalPrefs::instance()->setGlobalConfig(); | 141 | KPimGlobalPrefs::instance()->setGlobalConfig(); |
90 | // if ( QApplication::desktop()->height() > 480 ) { | 142 | // if ( QApplication::desktop()->height() > 480 ) { |
91 | // if ( p->mHourSize == 4 ) | 143 | // if ( p->mHourSize == 4 ) |
92 | // p->mHourSize = 6; | 144 | // p->mHourSize = 6; |
@@ -632,48 +684,57 @@ void MainWindow::initActions() | |||
632 | #ifdef _WIN32_ | 684 | #ifdef _WIN32_ |
633 | importMenu->insertSeparator(); | 685 | importMenu->insertSeparator(); |
634 | action = new QAction( "import_ol", i18n("Import from OL"), 0, | 686 | action = new QAction( "import_ol", i18n("Import from OL"), 0, |
635 | this ); | 687 | this ); |
636 | action->addTo( importMenu ); | 688 | action->addTo( importMenu ); |
637 | connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); | 689 | connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); |
638 | #endif | 690 | #endif |
639 | #endif | 691 | #endif |
640 | 692 | ||
641 | importMenu->insertSeparator(); | 693 | importMenu->insertSeparator(); |
642 | action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, | 694 | action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, |
643 | this ); | 695 | this ); |
644 | action->addTo( importMenu ); | 696 | action->addTo( importMenu ); |
645 | connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); | 697 | connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); |
646 | 698 | ||
647 | action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, | 699 | action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, |
648 | this ); | 700 | this ); |
649 | action->addTo( importMenu ); | 701 | action->addTo( importMenu ); |
650 | connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); | 702 | connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); |
651 | 703 | ||
652 | importMenu->insertSeparator(); | 704 | importMenu->insertSeparator(); |
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 ); |
659 | action->addTo( importMenu ); | 720 | action->addTo( importMenu ); |
660 | connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); | 721 | connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); |
661 | #ifndef DESKTOP_VERSION | 722 | #ifndef DESKTOP_VERSION |
662 | importMenu->insertSeparator(); | 723 | importMenu->insertSeparator(); |
663 | action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, | 724 | action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, |
664 | this ); | 725 | this ); |
665 | action->addTo( importMenu ); | 726 | action->addTo( importMenu ); |
666 | connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); | 727 | connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); |
667 | 728 | ||
668 | action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, | 729 | action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, |
669 | this ); | 730 | this ); |
670 | action->addTo( importMenu ); | 731 | action->addTo( importMenu ); |
671 | connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); | 732 | connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); |
672 | #else | 733 | #else |
673 | importMenu->insertSeparator(); | 734 | importMenu->insertSeparator(); |
674 | icon = loadPixmap( pathString + "print" ); | 735 | icon = loadPixmap( pathString + "print" ); |
675 | action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); | 736 | action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); |
676 | action->addTo( importMenu ); | 737 | action->addTo( importMenu ); |
677 | connect( action, SIGNAL( activated() ), | 738 | connect( action, SIGNAL( activated() ), |
678 | this, SLOT( printCal() ) ); | 739 | this, SLOT( printCal() ) ); |
679 | 740 | ||
@@ -1066,55 +1127,128 @@ void MainWindow::slotSyncMenu( int action ) | |||
1066 | 1127 | ||
1067 | } else if ( action >= 1003 ) { | 1128 | } else if ( action >= 1003 ) { |
1068 | if ( temp->getIsLocalFileSync() ) { | 1129 | if ( temp->getIsLocalFileSync() ) { |
1069 | if ( syncWithFile( temp->getRemoteFileName( ), false ) ) | 1130 | if ( syncWithFile( temp->getRemoteFileName( ), false ) ) |
1070 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); | 1131 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); |
1071 | } else { | 1132 | } else { |
1072 | if ( temp->getIsPhoneSync() ) { | 1133 | if ( temp->getIsPhoneSync() ) { |
1073 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; | 1134 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; |
1074 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); | 1135 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); |
1075 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); | 1136 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); |
1076 | syncPhone(); | 1137 | syncPhone(); |
1077 | } else if ( temp->getIsPiSync() ) { | 1138 | } else if ( temp->getIsPiSync() ) { |
1078 | mPassWordPiSync = temp->getRemotePw(); | 1139 | mPassWordPiSync = temp->getRemotePw(); |
1079 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); | 1140 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); |
1080 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); | 1141 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); |
1081 | syncPi(); | 1142 | syncPi(); |
1082 | } else | 1143 | } else |
1083 | syncRemote( temp ); | 1144 | syncRemote( temp ); |
1084 | 1145 | ||
1085 | } | 1146 | } |
1086 | } | 1147 | } |
1087 | delete temp; | 1148 | delete temp; |
1088 | mBlockSaveFlag = false; | 1149 | mBlockSaveFlag = false; |
1089 | } | 1150 | } |
1151 | void 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 | |||
1090 | void MainWindow::setDefaultPreferences() | 1223 | void MainWindow::setDefaultPreferences() |
1091 | { | 1224 | { |
1092 | KOPrefs *p = KOPrefs::instance(); | 1225 | KOPrefs *p = KOPrefs::instance(); |
1093 | 1226 | ||
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 | ||
1099 | QString MainWindow::resourcePath() | 1233 | QString MainWindow::resourcePath() |
1100 | { | 1234 | { |
1101 | return KGlobal::iconLoader()->iconPath(); | 1235 | return KGlobal::iconLoader()->iconPath(); |
1102 | } | 1236 | } |
1103 | 1237 | ||
1104 | void MainWindow::displayText( QString text ,QString cap ) | 1238 | void MainWindow::displayText( QString text ,QString cap ) |
1105 | { | 1239 | { |
1106 | QDialog dia( this, "name", true ); ; | 1240 | QDialog dia( this, "name", true ); ; |
1107 | dia.setCaption( cap ); | 1241 | dia.setCaption( cap ); |
1108 | QVBoxLayout* lay = new QVBoxLayout( &dia ); | 1242 | QVBoxLayout* lay = new QVBoxLayout( &dia ); |
1109 | lay->setSpacing( 3 ); | 1243 | lay->setSpacing( 3 ); |
1110 | lay->setMargin( 3 ); | 1244 | lay->setMargin( 3 ); |
1111 | QTextBrowser tb ( &dia ); | 1245 | QTextBrowser tb ( &dia ); |
1112 | lay->addWidget( &tb ); | 1246 | lay->addWidget( &tb ); |
1113 | tb.setText( text ); | 1247 | tb.setText( text ); |
1114 | #ifdef DESKTOP_VERSION | 1248 | #ifdef DESKTOP_VERSION |
1115 | dia.resize( 640, 480); | 1249 | dia.resize( 640, 480); |
1116 | #else | 1250 | #else |
1117 | dia.showMaximized(); | 1251 | dia.showMaximized(); |
1118 | #endif | 1252 | #endif |
1119 | dia.exec(); | 1253 | dia.exec(); |
1120 | } | 1254 | } |
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 7b24b88..74c7f45 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h | |||
@@ -123,48 +123,49 @@ class MainWindow : public QMainWindow | |||
123 | void keyBindings(); | 123 | void keyBindings(); |
124 | void aboutAutoSaving();; | 124 | void aboutAutoSaving();; |
125 | void aboutKnownBugs(); | 125 | void aboutKnownBugs(); |
126 | 126 | ||
127 | void processIncidenceSelection( Incidence * ); | 127 | void processIncidenceSelection( Incidence * ); |
128 | 128 | ||
129 | void importQtopia(); | 129 | void importQtopia(); |
130 | void importBday(); | 130 | void importBday(); |
131 | void importOL(); | 131 | void importOL(); |
132 | void importIcal(); | 132 | void importIcal(); |
133 | void importFile( QString, bool ); | 133 | void importFile( QString, bool ); |
134 | void quickImportIcal(); | 134 | void quickImportIcal(); |
135 | 135 | ||
136 | void slotModifiedChanged( bool ); | 136 | void slotModifiedChanged( bool ); |
137 | 137 | ||
138 | void save(); | 138 | void save(); |
139 | void configureToolBar( int ); | 139 | void configureToolBar( int ); |
140 | void printSel(); | 140 | void printSel(); |
141 | void printCal(); | 141 | void printCal(); |
142 | void saveCalendar(); | 142 | void saveCalendar(); |
143 | void loadCalendar(); | 143 | void loadCalendar(); |
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(); |
150 | void syncSharp(); | 151 | void syncSharp(); |
151 | void syncPhone(); | 152 | void syncPhone(); |
152 | void syncPi(); | 153 | void syncPi(); |
153 | void syncLocalFile(); | 154 | void syncLocalFile(); |
154 | bool syncWithFile( QString, bool ); | 155 | bool syncWithFile( QString, bool ); |
155 | void quickSyncLocalFile(); | 156 | void quickSyncLocalFile(); |
156 | 157 | ||
157 | 158 | ||
158 | protected: | 159 | protected: |
159 | void displayText( QString, QString); | 160 | void displayText( QString, QString); |
160 | void displayFile( QString, QString); | 161 | void displayFile( QString, QString); |
161 | 162 | ||
162 | void enableIncidenceActions( bool ); | 163 | void enableIncidenceActions( bool ); |
163 | 164 | ||
164 | private slots: | 165 | private slots: |
165 | QSocket* piSocket; | 166 | QSocket* piSocket; |
166 | QString piFileString; | 167 | QString piFileString; |
167 | QTime piTime; | 168 | QTime piTime; |
168 | void deleteCommandSocket(KCommandSocket* s, int state ); | 169 | void deleteCommandSocket(KCommandSocket* s, int state ); |
169 | void fillSyncMenu(); | 170 | void fillSyncMenu(); |
170 | void getFile( bool ); | 171 | void getFile( bool ); |
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index 29c1ae6..b2a62b1 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp | |||
@@ -63,50 +63,61 @@ public: | |||
63 | dt = dti.addSecs ( -(offset*60)); | 63 | dt = dti.addSecs ( -(offset*60)); |
64 | else | 64 | else |
65 | dt = dti; | 65 | dt = dti; |
66 | if(dt.date().isValid()){ | 66 | if(dt.date().isValid()){ |
67 | const QDate& date = dt.date(); | 67 | const QDate& date = dt.date(); |
68 | datestr.sprintf("%04d%02d%02d", | 68 | datestr.sprintf("%04d%02d%02d", |
69 | date.year(), date.month(), date.day()); | 69 | date.year(), date.month(), date.day()); |
70 | } | 70 | } |
71 | if(dt.time().isValid()){ | 71 | if(dt.time().isValid()){ |
72 | const QTime& time = dt.time(); | 72 | const QTime& time = dt.time(); |
73 | timestr.sprintf("T%02d%02d%02d", | 73 | timestr.sprintf("T%02d%02d%02d", |
74 | time.hour(), time.minute(), time.second()); | 74 | time.hour(), time.minute(), time.second()); |
75 | } | 75 | } |
76 | return datestr + timestr; | 76 | return datestr + timestr; |
77 | } | 77 | } |
78 | 78 | ||
79 | 79 | ||
80 | }; | 80 | }; |
81 | 81 | ||
82 | 82 | ||
83 | 83 | ||
84 | PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model ) | 84 | PhoneFormat::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 | |||
90 | PhoneFormat::~PhoneFormat() | ||
91 | { | ||
92 | } | ||
93 | void 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 ) { |
101 | //qDebug("*%s* ", line.latin1() ); | 112 | //qDebug("*%s* ", line.latin1() ); |
102 | if ( line.left(7 ) == "[gammu]" ) { | 113 | if ( line.left(7 ) == "[gammu]" ) { |
103 | ; | 114 | ; |
104 | } else | 115 | } else |
105 | if ( line.left(4 ) == "port" ) { | 116 | if ( line.left(4 ) == "port" ) { |
106 | if ( line == "port = " + device+"\n" ) { | 117 | if ( line == "port = " + device+"\n" ) { |
107 | content += line ; | 118 | content += line ; |
108 | addPort = false; | 119 | addPort = false; |
109 | //qDebug("port found" ); | 120 | //qDebug("port found" ); |
110 | } | 121 | } |
111 | 122 | ||
112 | } else if ( line.left(5 ) == "model" ) { | 123 | } else if ( line.left(5 ) == "model" ) { |
@@ -155,52 +166,49 @@ PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, | |||
155 | write = true; | 166 | write = true; |
156 | content += "port = "; | 167 | content += "port = "; |
157 | content += device; | 168 | content += device; |
158 | content += "\n"; | 169 | content += "\n"; |
159 | 170 | ||
160 | } | 171 | } |
161 | if ( addModel ) { | 172 | if ( addModel ) { |
162 | if ( ! write ) | 173 | if ( ! write ) |
163 | content += "[gammu]\n"; | 174 | content += "[gammu]\n"; |
164 | write = true; | 175 | write = true; |
165 | content += "model = "; | 176 | content += "model = "; |
166 | content += model; | 177 | content += model; |
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 | ||
181 | PhoneFormat::~PhoneFormat() | ||
182 | { | ||
183 | } | 191 | } |
184 | #if 0 | 192 | #if 0 |
185 | int PhoneFormat::initDevice(GSM_StateMachine *s) | 193 | int 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 | ||
195 | } | 203 | } |
196 | if ( ! mDevice.isEmpty() ) { | 204 | if ( ! mDevice.isEmpty() ) { |
197 | cfg->Device = strdup(mDevice.latin1()); | 205 | cfg->Device = strdup(mDevice.latin1()); |
198 | cfg->DefaultDevice = false; | 206 | cfg->DefaultDevice = false; |
199 | qDebug("Device set %s ", cfg->Device); | 207 | qDebug("Device set %s ", cfg->Device); |
200 | 208 | ||
201 | } | 209 | } |
202 | if ( ! mModel.isEmpty() ) { | 210 | if ( ! mModel.isEmpty() ) { |
203 | strcpy(cfg->Model,mModel.latin1() ); | 211 | strcpy(cfg->Model,mModel.latin1() ); |
204 | cfg->DefaultModel = false; | 212 | cfg->DefaultModel = false; |
205 | qDebug("Model set %s ",cfg->Model ); | 213 | qDebug("Model set %s ",cfg->Model ); |
206 | } | 214 | } |
@@ -548,111 +556,119 @@ void PhoneFormat::copyTodo( Todo* to, Todo* from ) | |||
548 | } | 556 | } |
549 | if( to->priority() == 2 && from->priority() == 1 ) | 557 | if( to->priority() == 2 && from->priority() == 1 ) |
550 | ; //skip | 558 | ; //skip |
551 | else if (to->priority() == 4 && from->priority() == 5 ) | 559 | else if (to->priority() == 4 && from->priority() == 5 ) |
552 | ; | 560 | ; |
553 | else | 561 | else |
554 | to->setPriority(from->priority()); | 562 | to->setPriority(from->priority()); |
555 | 563 | ||
556 | } | 564 | } |
557 | #include <qcstring.h> | 565 | #include <qcstring.h> |
558 | 566 | ||
559 | void PhoneFormat::afterSave( Incidence* inc) | 567 | 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 | |||
581 | bool 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 | } | ||
572 | bool PhoneFormat::save( Calendar *calendar) | 609 | bool 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 | } |
603 | // 2 remove todos which should be deleted | 635 | // 2 remove todos which should be deleted |
604 | QPtrList<Todo> tl = calendar->rawTodos(); | 636 | QPtrList<Todo> tl = calendar->rawTodos(); |
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 | } |
647 | // 6 compare data | 663 | // 6 compare data |
648 | 664 | ||
649 | //algo 6 compare event | 665 | //algo 6 compare event |
650 | er = calendar->rawEvents(); | 666 | er = calendar->rawEvents(); |
651 | ev = er.first(); | 667 | ev = er.first(); |
652 | message = i18n(" Comparing event # "); | 668 | message = i18n(" Comparing event # "); |
653 | QPtrList<Event> er1 = calendarTemp->rawEvents(); | 669 | QPtrList<Event> er1 = calendarTemp->rawEvents(); |
654 | Event* ev1; | 670 | Event* ev1; |
655 | int procCount = 0; | 671 | int procCount = 0; |
656 | while ( ev ) { | 672 | while ( ev ) { |
657 | //qDebug("event new ID %s",ev->summary().latin1()); | 673 | //qDebug("event new ID %s",ev->summary().latin1()); |
658 | status.setText ( message + QString::number ( ++procCount ) ); | 674 | status.setText ( message + QString::number ( ++procCount ) ); |
diff --git a/libkcal/phoneformat.h b/libkcal/phoneformat.h index 2d1ff79..61e8160 100644 --- a/libkcal/phoneformat.h +++ b/libkcal/phoneformat.h | |||
@@ -27,35 +27,37 @@ | |||
27 | 27 | ||
28 | #include "vcalformat.h" | 28 | #include "vcalformat.h" |
29 | #include "calformat.h" | 29 | #include "calformat.h" |
30 | 30 | ||
31 | namespace KCal { | 31 | namespace KCal { |
32 | 32 | ||
33 | /** | 33 | /** |
34 | This class implements the calendar format used by Phone. | 34 | This class implements the calendar format used by Phone. |
35 | */ | 35 | */ |
36 | class Event; | 36 | class Event; |
37 | class Todo; | 37 | class Todo; |
38 | class PhoneFormat : public QObject { | 38 | 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 |