-rw-r--r-- | kaddressbook/kabcore.cpp | 32 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 5 | ||||
-rw-r--r-- | libkcal/libkcal.pro | 2 | ||||
-rw-r--r-- | libkcal/libkcalE.pro | 2 | ||||
-rw-r--r-- | libkcal/phoneformat.cpp | 117 | ||||
-rw-r--r-- | libkcal/phoneformat.h | 1 |
6 files changed, 22 insertions, 137 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 185cf46..7bec90a 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -1,233 +1,234 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressbook. | 2 | This file is part of KAddressbook. |
3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> | 3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /* | 24 | /*s |
25 | Enhanced Version of the file for platform independent KDE tools. | 25 | Enhanced Version of the file for platform independent KDE tools. |
26 | Copyright (c) 2004 Ulf Schenk | 26 | Copyright (c) 2004 Ulf Schenk |
27 | 27 | ||
28 | $Id$ | 28 | $Id$ |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "kabcore.h" | 31 | #include "kabcore.h" |
32 | 32 | ||
33 | #include <stdaddressbook.h> | 33 | #include <stdaddressbook.h> |
34 | #include <klocale.h> | 34 | #include <klocale.h> |
35 | #include <kfiledialog.h> | 35 | #include <kfiledialog.h> |
36 | #include <qtimer.h> | 36 | #include <qtimer.h> |
37 | #include <qlabel.h> | 37 | #include <qlabel.h> |
38 | #include <qlineedit.h> | 38 | #include <qlineedit.h> |
39 | #include <qcheckbox.h> | 39 | #include <qcheckbox.h> |
40 | #include <qpushbutton.h> | 40 | #include <qpushbutton.h> |
41 | #include <qprogressbar.h> | 41 | #include <qprogressbar.h> |
42 | #include <libkdepim/phoneaccess.h> | ||
42 | 43 | ||
43 | #ifndef KAB_EMBEDDED | 44 | #ifndef KAB_EMBEDDED |
44 | #include <qclipboard.h> | 45 | #include <qclipboard.h> |
45 | #include <qdir.h> | 46 | #include <qdir.h> |
46 | #include <qfile.h> | 47 | #include <qfile.h> |
47 | #include <qapplicaton.h> | 48 | #include <qapplicaton.h> |
48 | #include <qprogressbar.h> | 49 | #include <qprogressbar.h> |
49 | #include <qlayout.h> | 50 | #include <qlayout.h> |
50 | #include <qregexp.h> | 51 | #include <qregexp.h> |
51 | #include <qvbox.h> | 52 | #include <qvbox.h> |
52 | #include <kabc/addresseelist.h> | 53 | #include <kabc/addresseelist.h> |
53 | #include <kabc/errorhandler.h> | 54 | #include <kabc/errorhandler.h> |
54 | #include <kabc/resource.h> | 55 | #include <kabc/resource.h> |
55 | #include <kabc/vcardconverter.h> | 56 | #include <kabc/vcardconverter.h> |
56 | #include <kapplication.h> | 57 | #include <kapplication.h> |
57 | #include <kactionclasses.h> | 58 | #include <kactionclasses.h> |
58 | #include <kcmultidialog.h> | 59 | #include <kcmultidialog.h> |
59 | #include <kdebug.h> | 60 | #include <kdebug.h> |
60 | #include <kdeversion.h> | 61 | #include <kdeversion.h> |
61 | #include <kkeydialog.h> | 62 | #include <kkeydialog.h> |
62 | #include <kmessagebox.h> | 63 | #include <kmessagebox.h> |
63 | #include <kprinter.h> | 64 | #include <kprinter.h> |
64 | #include <kprotocolinfo.h> | 65 | #include <kprotocolinfo.h> |
65 | #include <kresources/selectdialog.h> | 66 | #include <kresources/selectdialog.h> |
66 | #include <kstandarddirs.h> | 67 | #include <kstandarddirs.h> |
67 | #include <ktempfile.h> | 68 | #include <ktempfile.h> |
68 | #include <kxmlguiclient.h> | 69 | #include <kxmlguiclient.h> |
69 | #include <kaboutdata.h> | 70 | #include <kaboutdata.h> |
70 | #include <libkdepim/categoryselectdialog.h> | 71 | #include <libkdepim/categoryselectdialog.h> |
71 | 72 | ||
72 | #include "addresseeutil.h" | 73 | #include "addresseeutil.h" |
73 | #include "addresseeeditordialog.h" | 74 | #include "addresseeeditordialog.h" |
74 | #include "extensionmanager.h" | 75 | #include "extensionmanager.h" |
75 | #include "kstdaction.h" | 76 | #include "kstdaction.h" |
76 | #include "kaddressbookservice.h" | 77 | #include "kaddressbookservice.h" |
77 | #include "ldapsearchdialog.h" | 78 | #include "ldapsearchdialog.h" |
78 | #include "printing/printingwizard.h" | 79 | #include "printing/printingwizard.h" |
79 | #else // KAB_EMBEDDED | 80 | #else // KAB_EMBEDDED |
80 | 81 | ||
81 | #include <kapplication.h> | 82 | #include <kapplication.h> |
82 | #include "KDGanttMinimizeSplitter.h" | 83 | #include "KDGanttMinimizeSplitter.h" |
83 | #include "kaddressbookmain.h" | 84 | #include "kaddressbookmain.h" |
84 | #include "kactioncollection.h" | 85 | #include "kactioncollection.h" |
85 | #include "addresseedialog.h" | 86 | #include "addresseedialog.h" |
86 | //US | 87 | //US |
87 | #include <addresseeview.h> | 88 | #include <addresseeview.h> |
88 | 89 | ||
89 | #include <qapp.h> | 90 | #include <qapp.h> |
90 | #include <qmenubar.h> | 91 | #include <qmenubar.h> |
91 | //#include <qtoolbar.h> | 92 | //#include <qtoolbar.h> |
92 | #include <qmessagebox.h> | 93 | #include <qmessagebox.h> |
93 | #include <kdebug.h> | 94 | #include <kdebug.h> |
94 | #include <kiconloader.h> // needed for SmallIcon | 95 | #include <kiconloader.h> // needed for SmallIcon |
95 | #include <kresources/kcmkresources.h> | 96 | #include <kresources/kcmkresources.h> |
96 | #include <ktoolbar.h> | 97 | #include <ktoolbar.h> |
97 | 98 | ||
98 | 99 | ||
99 | //#include <qlabel.h> | 100 | //#include <qlabel.h> |
100 | 101 | ||
101 | 102 | ||
102 | #ifndef DESKTOP_VERSION | 103 | #ifndef DESKTOP_VERSION |
103 | #include <qpe/ir.h> | 104 | #include <qpe/ir.h> |
104 | #include <qpe/qpemenubar.h> | 105 | #include <qpe/qpemenubar.h> |
105 | #include <qtopia/qcopenvelope_qws.h> | 106 | #include <qtopia/qcopenvelope_qws.h> |
106 | #else | 107 | #else |
107 | 108 | ||
108 | #include <qmenubar.h> | 109 | #include <qmenubar.h> |
109 | #endif | 110 | #endif |
110 | 111 | ||
111 | #endif // KAB_EMBEDDED | 112 | #endif // KAB_EMBEDDED |
112 | #include "kcmconfigs/kcmkabconfig.h" | 113 | #include "kcmconfigs/kcmkabconfig.h" |
113 | #include "kcmconfigs/kcmkdepimconfig.h" | 114 | #include "kcmconfigs/kcmkdepimconfig.h" |
114 | #include "kpimglobalprefs.h" | 115 | #include "kpimglobalprefs.h" |
115 | #include "externalapphandler.h" | 116 | #include "externalapphandler.h" |
116 | 117 | ||
117 | 118 | ||
118 | #include <kresources/selectdialog.h> | 119 | #include <kresources/selectdialog.h> |
119 | #include <kmessagebox.h> | 120 | #include <kmessagebox.h> |
120 | 121 | ||
121 | #include <picture.h> | 122 | #include <picture.h> |
122 | #include <resource.h> | 123 | #include <resource.h> |
123 | 124 | ||
124 | //US#include <qsplitter.h> | 125 | //US#include <qsplitter.h> |
125 | #include <qmap.h> | 126 | #include <qmap.h> |
126 | #include <qdir.h> | 127 | #include <qdir.h> |
127 | #include <qfile.h> | 128 | #include <qfile.h> |
128 | #include <qvbox.h> | 129 | #include <qvbox.h> |
129 | #include <qlayout.h> | 130 | #include <qlayout.h> |
130 | #include <qclipboard.h> | 131 | #include <qclipboard.h> |
131 | #include <qtextstream.h> | 132 | #include <qtextstream.h> |
132 | 133 | ||
133 | #include <libkdepim/categoryselectdialog.h> | 134 | #include <libkdepim/categoryselectdialog.h> |
134 | #include <kabc/vcardconverter.h> | 135 | #include <kabc/vcardconverter.h> |
135 | 136 | ||
136 | 137 | ||
137 | #include "addresseeutil.h" | 138 | #include "addresseeutil.h" |
138 | #include "undocmds.h" | 139 | #include "undocmds.h" |
139 | #include "addresseeeditordialog.h" | 140 | #include "addresseeeditordialog.h" |
140 | #include "viewmanager.h" | 141 | #include "viewmanager.h" |
141 | #include "details/detailsviewcontainer.h" | 142 | #include "details/detailsviewcontainer.h" |
142 | #include "kabprefs.h" | 143 | #include "kabprefs.h" |
143 | #include "xxportmanager.h" | 144 | #include "xxportmanager.h" |
144 | #include "incsearchwidget.h" | 145 | #include "incsearchwidget.h" |
145 | #include "jumpbuttonbar.h" | 146 | #include "jumpbuttonbar.h" |
146 | #include "extensionmanager.h" | 147 | #include "extensionmanager.h" |
147 | #include "addresseeconfig.h" | 148 | #include "addresseeconfig.h" |
148 | #include <kcmultidialog.h> | 149 | #include <kcmultidialog.h> |
149 | 150 | ||
150 | #ifdef _WIN32_ | 151 | #ifdef _WIN32_ |
151 | 152 | ||
152 | #include "kaimportoldialog.h" | 153 | #include "kaimportoldialog.h" |
153 | #else | 154 | #else |
154 | #include <unistd.h> | 155 | #include <unistd.h> |
155 | #endif | 156 | #endif |
156 | // sync includes | 157 | // sync includes |
157 | #include <libkdepim/ksyncprofile.h> | 158 | #include <libkdepim/ksyncprofile.h> |
158 | #include <libkdepim/ksyncprefsdialog.h> | 159 | #include <libkdepim/ksyncprefsdialog.h> |
159 | 160 | ||
160 | class KAex2phonePrefs : public QDialog | 161 | class KAex2phonePrefs : public QDialog |
161 | { | 162 | { |
162 | public: | 163 | public: |
163 | KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : | 164 | KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : |
164 | QDialog( parent, name, true ) | 165 | QDialog( parent, name, true ) |
165 | { | 166 | { |
166 | setCaption( i18n("Export to phone options") ); | 167 | setCaption( i18n("Export to phone options") ); |
167 | QVBoxLayout* lay = new QVBoxLayout( this ); | 168 | QVBoxLayout* lay = new QVBoxLayout( this ); |
168 | lay->setSpacing( 3 ); | 169 | lay->setSpacing( 3 ); |
169 | lay->setMargin( 3 ); | 170 | lay->setMargin( 3 ); |
170 | QLabel *lab; | 171 | QLabel *lab; |
171 | lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); | 172 | lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); |
172 | lab->setAlignment (AlignHCenter ); | 173 | lab->setAlignment (AlignHCenter ); |
173 | QHBox* temphb; | 174 | QHBox* temphb; |
174 | temphb = new QHBox( this ); | 175 | temphb = new QHBox( this ); |
175 | new QLabel( i18n("I/O device: "), temphb ); | 176 | new QLabel( i18n("I/O device: "), temphb ); |
176 | mPhoneDevice = new QLineEdit( temphb); | 177 | mPhoneDevice = new QLineEdit( temphb); |
177 | lay->addWidget( temphb ); | 178 | lay->addWidget( temphb ); |
178 | temphb = new QHBox( this ); | 179 | temphb = new QHBox( this ); |
179 | new QLabel( i18n("Connection: "), temphb ); | 180 | new QLabel( i18n("Connection: "), temphb ); |
180 | mPhoneConnection = new QLineEdit( temphb); | 181 | mPhoneConnection = new QLineEdit( temphb); |
181 | lay->addWidget( temphb ); | 182 | lay->addWidget( temphb ); |
182 | temphb = new QHBox( this ); | 183 | temphb = new QHBox( this ); |
183 | new QLabel( i18n("Model(opt.): "), temphb ); | 184 | new QLabel( i18n("Model(opt.): "), temphb ); |
184 | mPhoneModel = new QLineEdit( temphb); | 185 | mPhoneModel = new QLineEdit( temphb); |
185 | lay->addWidget( temphb ); | 186 | lay->addWidget( temphb ); |
186 | mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); | 187 | mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); |
187 | lay->addWidget( mWriteToSim ); | 188 | lay->addWidget( mWriteToSim ); |
188 | lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); | 189 | lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); |
189 | lab->setAlignment (AlignHCenter ); | 190 | lab->setAlignment (AlignHCenter ); |
190 | QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); | 191 | QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); |
191 | lay->addWidget( ok ); | 192 | lay->addWidget( ok ); |
192 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); | 193 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); |
193 | lay->addWidget( cancel ); | 194 | lay->addWidget( cancel ); |
194 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); | 195 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); |
195 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); | 196 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); |
196 | resize( 220, 240 ); | 197 | resize( 220, 240 ); |
197 | 198 | ||
198 | } | 199 | } |
199 | 200 | ||
200 | public: | 201 | public: |
201 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; | 202 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; |
202 | QCheckBox* mWriteToSim; | 203 | QCheckBox* mWriteToSim; |
203 | }; | 204 | }; |
204 | 205 | ||
205 | bool pasteWithNewUid = true; | 206 | bool pasteWithNewUid = true; |
206 | 207 | ||
207 | #ifdef KAB_EMBEDDED | 208 | #ifdef KAB_EMBEDDED |
208 | KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) | 209 | KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) |
209 | : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), | 210 | : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), |
210 | mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ | 211 | mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ |
211 | mReadWrite( readWrite ), mModified( false ), mMainWindow(client) | 212 | mReadWrite( readWrite ), mModified( false ), mMainWindow(client) |
212 | #else //KAB_EMBEDDED | 213 | #else //KAB_EMBEDDED |
213 | KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) | 214 | KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) |
214 | : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), | 215 | : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), |
215 | mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), | 216 | mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), |
216 | mReadWrite( readWrite ), mModified( false ) | 217 | mReadWrite( readWrite ), mModified( false ) |
217 | #endif //KAB_EMBEDDED | 218 | #endif //KAB_EMBEDDED |
218 | { | 219 | { |
219 | // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); | 220 | // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); |
220 | // syncManager->setBlockSave(false); | 221 | // syncManager->setBlockSave(false); |
221 | mExtensionBarSplitter = 0; | 222 | mExtensionBarSplitter = 0; |
222 | mIsPart = !parent->inherits( "KAddressBookMain" ); | 223 | mIsPart = !parent->inherits( "KAddressBookMain" ); |
223 | 224 | ||
224 | mAddressBook = KABC::StdAddressBook::self(); | 225 | mAddressBook = KABC::StdAddressBook::self(); |
225 | KABC::StdAddressBook::setAutomaticSave( false ); | 226 | KABC::StdAddressBook::setAutomaticSave( false ); |
226 | 227 | ||
227 | #ifndef KAB_EMBEDDED | 228 | #ifndef KAB_EMBEDDED |
228 | mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); | 229 | mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); |
229 | #endif //KAB_EMBEDDED | 230 | #endif //KAB_EMBEDDED |
230 | 231 | ||
231 | connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), | 232 | connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), |
232 | SLOT( addressBookChanged() ) ); | 233 | SLOT( addressBookChanged() ) ); |
233 | 234 | ||
@@ -484,448 +485,443 @@ void KABCore::createAboutData() | |||
484 | 485 | ||
485 | return about; | 486 | return about; |
486 | #endif //KAB_EMBEDDED | 487 | #endif //KAB_EMBEDDED |
487 | 488 | ||
488 | QString version; | 489 | QString version; |
489 | #include <../version> | 490 | #include <../version> |
490 | QMessageBox::about( this, "About KAddressbook/Pi", | 491 | QMessageBox::about( this, "About KAddressbook/Pi", |
491 | "KAddressbook/Platform-independent\n" | 492 | "KAddressbook/Platform-independent\n" |
492 | "(KA/Pi) " +version + " - " + | 493 | "(KA/Pi) " +version + " - " + |
493 | #ifdef DESKTOP_VERSION | 494 | #ifdef DESKTOP_VERSION |
494 | "Desktop Edition\n" | 495 | "Desktop Edition\n" |
495 | #else | 496 | #else |
496 | "PDA-Edition\n" | 497 | "PDA-Edition\n" |
497 | "for: Zaurus 5500 / 7x0 / 8x0\n" | 498 | "for: Zaurus 5500 / 7x0 / 8x0\n" |
498 | #endif | 499 | #endif |
499 | 500 | ||
500 | "(c) 2004 Ulf Schenk\n" | 501 | "(c) 2004 Ulf Schenk\n" |
501 | "(c) 2004 Lutz Rogowski\n" | 502 | "(c) 2004 Lutz Rogowski\n" |
502 | "(c) 1997-2003, The KDE PIM Team\n" | 503 | "(c) 1997-2003, The KDE PIM Team\n" |
503 | "Tobias Koenig Current maintainer\ntokoe@kde.org\n" | 504 | "Tobias Koenig Current maintainer\ntokoe@kde.org\n" |
504 | "Don Sanders Original author\n" | 505 | "Don Sanders Original author\n" |
505 | "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" | 506 | "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" |
506 | "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" | 507 | "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" |
507 | "Greg Stern DCOP interface\n" | 508 | "Greg Stern DCOP interface\n" |
508 | "Mark Westcot Contact pinning\n" | 509 | "Mark Westcot Contact pinning\n" |
509 | "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" | 510 | "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" |
510 | "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" | 511 | "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" |
511 | #ifdef _WIN32_ | 512 | #ifdef _WIN32_ |
512 | "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" | 513 | "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" |
513 | #endif | 514 | #endif |
514 | ); | 515 | ); |
515 | } | 516 | } |
516 | 517 | ||
517 | void KABCore::setContactSelected( const QString &uid ) | 518 | void KABCore::setContactSelected( const QString &uid ) |
518 | { | 519 | { |
519 | KABC::Addressee addr = mAddressBook->findByUid( uid ); | 520 | KABC::Addressee addr = mAddressBook->findByUid( uid ); |
520 | if ( !mDetails->isHidden() ) | 521 | if ( !mDetails->isHidden() ) |
521 | mDetails->setAddressee( addr ); | 522 | mDetails->setAddressee( addr ); |
522 | 523 | ||
523 | if ( !addr.isEmpty() ) { | 524 | if ( !addr.isEmpty() ) { |
524 | emit contactSelected( addr.formattedName() ); | 525 | emit contactSelected( addr.formattedName() ); |
525 | KABC::Picture pic = addr.photo(); | 526 | KABC::Picture pic = addr.photo(); |
526 | if ( pic.isIntern() ) { | 527 | if ( pic.isIntern() ) { |
527 | //US emit contactSelected( pic.data() ); | 528 | //US emit contactSelected( pic.data() ); |
528 | //US instead use: | 529 | //US instead use: |
529 | QPixmap px; | 530 | QPixmap px; |
530 | if (pic.data().isNull() != true) | 531 | if (pic.data().isNull() != true) |
531 | { | 532 | { |
532 | px.convertFromImage(pic.data()); | 533 | px.convertFromImage(pic.data()); |
533 | } | 534 | } |
534 | 535 | ||
535 | emit contactSelected( px ); | 536 | emit contactSelected( px ); |
536 | } | 537 | } |
537 | } | 538 | } |
538 | 539 | ||
539 | 540 | ||
540 | mExtensionManager->setSelectionChanged(); | 541 | mExtensionManager->setSelectionChanged(); |
541 | 542 | ||
542 | // update the actions | 543 | // update the actions |
543 | bool selected = !uid.isEmpty(); | 544 | bool selected = !uid.isEmpty(); |
544 | 545 | ||
545 | if ( mReadWrite ) { | 546 | if ( mReadWrite ) { |
546 | mActionCut->setEnabled( selected ); | 547 | mActionCut->setEnabled( selected ); |
547 | mActionPaste->setEnabled( selected ); | 548 | mActionPaste->setEnabled( selected ); |
548 | } | 549 | } |
549 | 550 | ||
550 | mActionCopy->setEnabled( selected ); | 551 | mActionCopy->setEnabled( selected ); |
551 | mActionDelete->setEnabled( selected ); | 552 | mActionDelete->setEnabled( selected ); |
552 | mActionEditAddressee->setEnabled( selected ); | 553 | mActionEditAddressee->setEnabled( selected ); |
553 | mActionMail->setEnabled( selected ); | 554 | mActionMail->setEnabled( selected ); |
554 | mActionMailVCard->setEnabled( selected ); | 555 | mActionMailVCard->setEnabled( selected ); |
555 | //if (mActionBeam) | 556 | //if (mActionBeam) |
556 | //mActionBeam->setEnabled( selected ); | 557 | //mActionBeam->setEnabled( selected ); |
557 | 558 | ||
558 | if (mActionBeamVCard) | 559 | if (mActionBeamVCard) |
559 | mActionBeamVCard->setEnabled( selected ); | 560 | mActionBeamVCard->setEnabled( selected ); |
560 | 561 | ||
561 | mActionExport2phone->setEnabled( selected ); | 562 | mActionExport2phone->setEnabled( selected ); |
562 | mActionWhoAmI->setEnabled( selected ); | 563 | mActionWhoAmI->setEnabled( selected ); |
563 | mActionCategories->setEnabled( selected ); | 564 | mActionCategories->setEnabled( selected ); |
564 | } | 565 | } |
565 | 566 | ||
566 | void KABCore::sendMail() | 567 | void KABCore::sendMail() |
567 | { | 568 | { |
568 | sendMail( mViewManager->selectedEmails().join( ", " ) ); | 569 | sendMail( mViewManager->selectedEmails().join( ", " ) ); |
569 | } | 570 | } |
570 | 571 | ||
571 | void KABCore::sendMail( const QString& emaillist ) | 572 | void KABCore::sendMail( const QString& emaillist ) |
572 | { | 573 | { |
573 | // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " | 574 | // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " |
574 | if (emaillist.contains(",") > 0) | 575 | if (emaillist.contains(",") > 0) |
575 | ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); | 576 | ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); |
576 | else | 577 | else |
577 | ExternalAppHandler::instance()->mailToOneContact( emaillist ); | 578 | ExternalAppHandler::instance()->mailToOneContact( emaillist ); |
578 | } | 579 | } |
579 | 580 | ||
580 | 581 | ||
581 | 582 | ||
582 | void KABCore::mailVCard() | 583 | void KABCore::mailVCard() |
583 | { | 584 | { |
584 | QStringList uids = mViewManager->selectedUids(); | 585 | QStringList uids = mViewManager->selectedUids(); |
585 | if ( !uids.isEmpty() ) | 586 | if ( !uids.isEmpty() ) |
586 | mailVCard( uids ); | 587 | mailVCard( uids ); |
587 | } | 588 | } |
588 | 589 | ||
589 | void KABCore::mailVCard( const QStringList& uids ) | 590 | void KABCore::mailVCard( const QStringList& uids ) |
590 | { | 591 | { |
591 | QStringList urls; | 592 | QStringList urls; |
592 | 593 | ||
593 | // QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); | 594 | // QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); |
594 | 595 | ||
595 | QString dirName = "/tmp/" + KApplication::randomString( 8 ); | 596 | QString dirName = "/tmp/" + KApplication::randomString( 8 ); |
596 | 597 | ||
597 | 598 | ||
598 | 599 | ||
599 | QDir().mkdir( dirName, true ); | 600 | QDir().mkdir( dirName, true ); |
600 | 601 | ||
601 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { | 602 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { |
602 | KABC::Addressee a = mAddressBook->findByUid( *it ); | 603 | KABC::Addressee a = mAddressBook->findByUid( *it ); |
603 | 604 | ||
604 | if ( a.isEmpty() ) | 605 | if ( a.isEmpty() ) |
605 | continue; | 606 | continue; |
606 | 607 | ||
607 | QString name = a.givenName() + "_" + a.familyName() + ".vcf"; | 608 | QString name = a.givenName() + "_" + a.familyName() + ".vcf"; |
608 | 609 | ||
609 | QString fileName = dirName + "/" + name; | 610 | QString fileName = dirName + "/" + name; |
610 | 611 | ||
611 | QFile outFile(fileName); | 612 | QFile outFile(fileName); |
612 | 613 | ||
613 | if ( outFile.open(IO_WriteOnly) ) { // file opened successfully | 614 | if ( outFile.open(IO_WriteOnly) ) { // file opened successfully |
614 | KABC::VCardConverter converter; | 615 | KABC::VCardConverter converter; |
615 | QString vcard; | 616 | QString vcard; |
616 | 617 | ||
617 | converter.addresseeToVCard( a, vcard ); | 618 | converter.addresseeToVCard( a, vcard ); |
618 | 619 | ||
619 | QTextStream t( &outFile ); // use a text stream | 620 | QTextStream t( &outFile ); // use a text stream |
620 | t.setEncoding( QTextStream::UnicodeUTF8 ); | 621 | t.setEncoding( QTextStream::UnicodeUTF8 ); |
621 | t << vcard; | 622 | t << vcard; |
622 | 623 | ||
623 | outFile.close(); | 624 | outFile.close(); |
624 | 625 | ||
625 | urls.append( fileName ); | 626 | urls.append( fileName ); |
626 | } | 627 | } |
627 | } | 628 | } |
628 | 629 | ||
629 | bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); | 630 | bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); |
630 | 631 | ||
631 | 632 | ||
632 | /*US | 633 | /*US |
633 | kapp->invokeMailer( QString::null, QString::null, QString::null, | 634 | kapp->invokeMailer( QString::null, QString::null, QString::null, |
634 | QString::null, // subject | 635 | QString::null, // subject |
635 | QString::null, // body | 636 | QString::null, // body |
636 | QString::null, | 637 | QString::null, |
637 | urls ); // attachments | 638 | urls ); // attachments |
638 | */ | 639 | */ |
639 | 640 | ||
640 | } | 641 | } |
641 | 642 | ||
642 | /** | 643 | /** |
643 | Beams the "WhoAmI contact. | 644 | Beams the "WhoAmI contact. |
644 | */ | 645 | */ |
645 | void KABCore::beamMySelf() | 646 | void KABCore::beamMySelf() |
646 | { | 647 | { |
647 | KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); | 648 | KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); |
648 | if (!a.isEmpty()) | 649 | if (!a.isEmpty()) |
649 | { | 650 | { |
650 | QStringList uids; | 651 | QStringList uids; |
651 | uids << a.uid(); | 652 | uids << a.uid(); |
652 | 653 | ||
653 | beamVCard(uids); | 654 | beamVCard(uids); |
654 | } else { | 655 | } else { |
655 | KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); | 656 | KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); |
656 | 657 | ||
657 | 658 | ||
658 | } | 659 | } |
659 | } | 660 | } |
660 | 661 | ||
661 | void KABCore::export2phone() | 662 | void KABCore::export2phone() |
662 | { | 663 | { |
663 | 664 | ||
664 | KAex2phonePrefs ex2phone; | 665 | KAex2phonePrefs ex2phone; |
665 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); | 666 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); |
666 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); | 667 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); |
667 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); | 668 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); |
668 | 669 | ||
669 | if ( !ex2phone.exec() ) { | 670 | if ( !ex2phone.exec() ) { |
670 | return; | 671 | return; |
671 | } | 672 | } |
672 | KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); | 673 | KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); |
673 | KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); | 674 | KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); |
674 | KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); | 675 | KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); |
675 | 676 | ||
676 | #if 0 | 677 | |
677 | PhoneFormat::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, | 678 | PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, |
678 | KPimGlobalPrefs::instance()->mEx2PhoneConnection, | 679 | KPimGlobalPrefs::instance()->mEx2PhoneConnection, |
679 | KPimGlobalPrefs::instance()->mEx2PhoneModel ); | 680 | KPimGlobalPrefs::instance()->mEx2PhoneModel ); |
680 | 681 | ||
682 | QStringList uids = mViewManager->selectedUids(); | ||
683 | if ( uids.isEmpty() ) | ||
684 | return; | ||
681 | 685 | ||
686 | #ifdef _WIN32_ | ||
687 | QString fileName = locateLocal("tmp", "tempfile.vcf"); | ||
688 | #else | ||
689 | QString fileName = "/tmp/kdepimtemp.vcf"; | ||
690 | #endif | ||
682 | 691 | ||
683 | |||
684 | |||
685 | QString fileName = "/tmp/kapibeamfile.vcf"; | ||
686 | |||
687 | |||
688 | //QDir().mkdir( dirName, true ); | ||
689 | |||
690 | |||
691 | KABC::VCardConverter converter; | 692 | KABC::VCardConverter converter; |
692 | QString description; | 693 | QString description; |
693 | QString datastream; | 694 | QString datastream; |
694 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { | 695 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { |
695 | KABC::Addressee a = mAddressBook->findByUid( *it ); | 696 | KABC::Addressee a = mAddressBook->findByUid( *it ); |
696 | 697 | ||
697 | if ( a.isEmpty() ) | 698 | if ( a.isEmpty() ) |
698 | continue; | 699 | continue; |
699 | 700 | ||
700 | if (description.isEmpty()) | 701 | if (description.isEmpty()) |
701 | description = a.formattedName(); | 702 | description = a.formattedName(); |
702 | 703 | ||
703 | QString vcard; | 704 | QString vcard; |
704 | converter.addresseeToVCard( a, vcard ); | 705 | converter.addresseeToVCard( a, vcard ); |
705 | int start = 0; | 706 | int start = 0; |
706 | int next; | 707 | int next; |
707 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { | 708 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { |
708 | int semi = vcard.find(";", next); | 709 | int semi = vcard.find(";", next); |
709 | int dopp = vcard.find(":", next); | 710 | int dopp = vcard.find(":", next); |
710 | int sep; | 711 | int sep; |
711 | if ( semi < dopp && semi >= 0 ) | 712 | if ( semi < dopp && semi >= 0 ) |
712 | sep = semi ; | 713 | sep = semi ; |
713 | else | 714 | else |
714 | sep = dopp; | 715 | sep = dopp; |
715 | datastream +=vcard.mid( start, next - start); | 716 | datastream +=vcard.mid( start, next - start); |
716 | datastream +=vcard.mid( next+5,sep -next -5 ).upper(); | 717 | datastream +=vcard.mid( next+5,sep -next -5 ).upper(); |
717 | start = sep; | 718 | start = sep; |
718 | } | 719 | } |
719 | datastream += vcard.mid( start,vcard.length() ); | 720 | datastream += vcard.mid( start,vcard.length() ); |
720 | } | 721 | } |
721 | #ifndef DESKTOP_VERSION | ||
722 | QFile outFile(fileName); | 722 | QFile outFile(fileName); |
723 | if ( outFile.open(IO_WriteOnly) ) { | 723 | if ( outFile.open(IO_WriteOnly) ) { |
724 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); | 724 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); |
725 | QTextStream t( &outFile ); // use a text stream | 725 | QTextStream t( &outFile ); // use a text stream |
726 | t.setEncoding( QTextStream::UnicodeUTF8 ); | 726 | t.setEncoding( QTextStream::UnicodeUTF8 ); |
727 | t <<datastream; | 727 | t <<datastream; |
728 | outFile.close(); | 728 | outFile.close(); |
729 | Ir *ir = new Ir( this ); | ||
730 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); | ||
731 | ir->send( fileName, description, "text/x-vCard" ); | ||
732 | } else { | 729 | } else { |
733 | qDebug("Error open temp beam file "); | 730 | qDebug("Error open temp file "); |
734 | return; | 731 | return; |
735 | } | 732 | } |
736 | #endif | ||
737 | |||
738 | 733 | ||
739 | 734 | ||
735 | #if 0 | ||
740 | 736 | ||
741 | setCaption( i18n("Writing to phone...")); | 737 | setCaption( i18n("Writing to phone...")); |
742 | if ( PhoneFormat::writeToPhone( cal ) ) | 738 | if ( PhoneFormat::writeToPhone( cal ) ) |
743 | setCaption( i18n("Export to phone successful!")); | 739 | setCaption( i18n("Export to phone successful!")); |
744 | else | 740 | else |
745 | setCaption( i18n("Error exporting to phone!")); | 741 | setCaption( i18n("Error exporting to phone!")); |
746 | #endif | 742 | #endif |
747 | 743 | ||
748 | 744 | ||
749 | } | 745 | } |
750 | void KABCore::beamVCard() | 746 | void KABCore::beamVCard() |
751 | { | 747 | { |
752 | QStringList uids = mViewManager->selectedUids(); | 748 | QStringList uids = mViewManager->selectedUids(); |
753 | if ( !uids.isEmpty() ) | 749 | if ( !uids.isEmpty() ) |
754 | beamVCard( uids ); | 750 | beamVCard( uids ); |
755 | } | 751 | } |
756 | 752 | ||
757 | 753 | ||
758 | void KABCore::beamVCard(const QStringList& uids) | 754 | void KABCore::beamVCard(const QStringList& uids) |
759 | { | 755 | { |
760 | /*US | 756 | /*US |
761 | QString beamFilename; | 757 | QString beamFilename; |
762 | Opie::OPimContact c; | 758 | Opie::OPimContact c; |
763 | if ( actionPersonal->isOn() ) { | 759 | if ( actionPersonal->isOn() ) { |
764 | beamFilename = addressbookPersonalVCardName(); | 760 | beamFilename = addressbookPersonalVCardName(); |
765 | if ( !QFile::exists( beamFilename ) ) | 761 | if ( !QFile::exists( beamFilename ) ) |
766 | return; // can't beam a non-existent file | 762 | return; // can't beam a non-existent file |
767 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, | 763 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, |
768 | beamFilename ); | 764 | beamFilename ); |
769 | Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); | 765 | Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); |
770 | Opie::OPimContactAccess::List allList = access->allRecords(); | 766 | Opie::OPimContactAccess::List allList = access->allRecords(); |
771 | Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first | 767 | Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first |
772 | c = *it; | 768 | c = *it; |
773 | 769 | ||
774 | delete access; | 770 | delete access; |
775 | } else { | 771 | } else { |
776 | unlink( beamfile ); // delete if exists | 772 | unlink( beamfile ); // delete if exists |
777 | mkdir("/tmp/obex/", 0755); | 773 | mkdir("/tmp/obex/", 0755); |
778 | c = m_abView -> currentEntry(); | 774 | c = m_abView -> currentEntry(); |
779 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, | 775 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, |
780 | beamfile ); | 776 | beamfile ); |
781 | Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); | 777 | Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); |
782 | access->add( c ); | 778 | access->add( c ); |
783 | access->save(); | 779 | access->save(); |
784 | delete access; | 780 | delete access; |
785 | 781 | ||
786 | beamFilename = beamfile; | 782 | beamFilename = beamfile; |
787 | } | 783 | } |
788 | 784 | ||
789 | owarn << "Beaming: " << beamFilename << oendl; | 785 | owarn << "Beaming: " << beamFilename << oendl; |
790 | */ | 786 | */ |
791 | 787 | ||
792 | #if 0 | 788 | #if 0 |
793 | QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); | 789 | QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); |
794 | 790 | ||
795 | QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); | 791 | QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); |
796 | 792 | ||
797 | QString name = "contact.vcf"; | 793 | QString name = "contact.vcf"; |
798 | 794 | ||
799 | QString fileName = dirName + "/" + name; | 795 | QString fileName = dirName + "/" + name; |
800 | #endif | 796 | #endif |
801 | // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory | 797 | // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory |
802 | // | 798 | // |
803 | QString fileName = "/tmp/kapibeamfile.vcf"; | 799 | QString fileName = "/tmp/kapibeamfile.vcf"; |
804 | 800 | ||
805 | 801 | ||
806 | //QDir().mkdir( dirName, true ); | 802 | //QDir().mkdir( dirName, true ); |
807 | 803 | ||
808 | 804 | ||
809 | KABC::VCardConverter converter; | 805 | KABC::VCardConverter converter; |
810 | QString description; | 806 | QString description; |
811 | QString datastream; | 807 | QString datastream; |
812 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { | 808 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { |
813 | KABC::Addressee a = mAddressBook->findByUid( *it ); | 809 | KABC::Addressee a = mAddressBook->findByUid( *it ); |
814 | 810 | ||
815 | if ( a.isEmpty() ) | 811 | if ( a.isEmpty() ) |
816 | continue; | 812 | continue; |
817 | 813 | ||
818 | if (description.isEmpty()) | 814 | if (description.isEmpty()) |
819 | description = a.formattedName(); | 815 | description = a.formattedName(); |
820 | 816 | ||
821 | QString vcard; | 817 | QString vcard; |
822 | converter.addresseeToVCard( a, vcard ); | 818 | converter.addresseeToVCard( a, vcard ); |
823 | int start = 0; | 819 | int start = 0; |
824 | int next; | 820 | int next; |
825 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { | 821 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { |
826 | int semi = vcard.find(";", next); | 822 | int semi = vcard.find(";", next); |
827 | int dopp = vcard.find(":", next); | 823 | int dopp = vcard.find(":", next); |
828 | int sep; | 824 | int sep; |
829 | if ( semi < dopp && semi >= 0 ) | 825 | if ( semi < dopp && semi >= 0 ) |
830 | sep = semi ; | 826 | sep = semi ; |
831 | else | 827 | else |
832 | sep = dopp; | 828 | sep = dopp; |
833 | datastream +=vcard.mid( start, next - start); | 829 | datastream +=vcard.mid( start, next - start); |
834 | datastream +=vcard.mid( next+5,sep -next -5 ).upper(); | 830 | datastream +=vcard.mid( next+5,sep -next -5 ).upper(); |
835 | start = sep; | 831 | start = sep; |
836 | } | 832 | } |
837 | datastream += vcard.mid( start,vcard.length() ); | 833 | datastream += vcard.mid( start,vcard.length() ); |
838 | } | 834 | } |
839 | #ifndef DESKTOP_VERSION | 835 | #ifndef DESKTOP_VERSION |
840 | QFile outFile(fileName); | 836 | QFile outFile(fileName); |
841 | if ( outFile.open(IO_WriteOnly) ) { | 837 | if ( outFile.open(IO_WriteOnly) ) { |
842 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); | 838 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); |
843 | QTextStream t( &outFile ); // use a text stream | 839 | QTextStream t( &outFile ); // use a text stream |
844 | t.setEncoding( QTextStream::UnicodeUTF8 ); | 840 | t.setEncoding( QTextStream::UnicodeUTF8 ); |
845 | t <<datastream; | 841 | t <<datastream; |
846 | outFile.close(); | 842 | outFile.close(); |
847 | Ir *ir = new Ir( this ); | 843 | Ir *ir = new Ir( this ); |
848 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); | 844 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); |
849 | ir->send( fileName, description, "text/x-vCard" ); | 845 | ir->send( fileName, description, "text/x-vCard" ); |
850 | } else { | 846 | } else { |
851 | qDebug("Error open temp beam file "); | 847 | qDebug("Error open temp beam file "); |
852 | return; | 848 | return; |
853 | } | 849 | } |
854 | #endif | 850 | #endif |
855 | 851 | ||
856 | } | 852 | } |
857 | 853 | ||
858 | void KABCore::beamDone( Ir *ir ) | 854 | void KABCore::beamDone( Ir *ir ) |
859 | { | 855 | { |
860 | #ifndef DESKTOP_VERSION | 856 | #ifndef DESKTOP_VERSION |
861 | delete ir; | 857 | delete ir; |
862 | #endif | 858 | #endif |
863 | } | 859 | } |
864 | 860 | ||
865 | 861 | ||
866 | void KABCore::browse( const QString& url ) | 862 | void KABCore::browse( const QString& url ) |
867 | { | 863 | { |
868 | #ifndef KAB_EMBEDDED | 864 | #ifndef KAB_EMBEDDED |
869 | kapp->invokeBrowser( url ); | 865 | kapp->invokeBrowser( url ); |
870 | #else //KAB_EMBEDDED | 866 | #else //KAB_EMBEDDED |
871 | qDebug("KABCore::browse must be fixed"); | 867 | qDebug("KABCore::browse must be fixed"); |
872 | #endif //KAB_EMBEDDED | 868 | #endif //KAB_EMBEDDED |
873 | } | 869 | } |
874 | 870 | ||
875 | void KABCore::selectAllContacts() | 871 | void KABCore::selectAllContacts() |
876 | { | 872 | { |
877 | mViewManager->setSelected( QString::null, true ); | 873 | mViewManager->setSelected( QString::null, true ); |
878 | } | 874 | } |
879 | 875 | ||
880 | void KABCore::deleteContacts() | 876 | void KABCore::deleteContacts() |
881 | { | 877 | { |
882 | QStringList uidList = mViewManager->selectedUids(); | 878 | QStringList uidList = mViewManager->selectedUids(); |
883 | deleteContacts( uidList ); | 879 | deleteContacts( uidList ); |
884 | } | 880 | } |
885 | 881 | ||
886 | void KABCore::deleteContacts( const QStringList &uids ) | 882 | void KABCore::deleteContacts( const QStringList &uids ) |
887 | { | 883 | { |
888 | if ( uids.count() > 0 ) { | 884 | if ( uids.count() > 0 ) { |
889 | PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); | 885 | PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); |
890 | UndoStack::instance()->push( command ); | 886 | UndoStack::instance()->push( command ); |
891 | RedoStack::instance()->clear(); | 887 | RedoStack::instance()->clear(); |
892 | 888 | ||
893 | // now if we deleted anything, refresh | 889 | // now if we deleted anything, refresh |
894 | setContactSelected( QString::null ); | 890 | setContactSelected( QString::null ); |
895 | setModified( true ); | 891 | setModified( true ); |
896 | } | 892 | } |
897 | } | 893 | } |
898 | 894 | ||
899 | void KABCore::copyContacts() | 895 | void KABCore::copyContacts() |
900 | { | 896 | { |
901 | KABC::Addressee::List addrList = mViewManager->selectedAddressees(); | 897 | KABC::Addressee::List addrList = mViewManager->selectedAddressees(); |
902 | 898 | ||
903 | QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); | 899 | QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); |
904 | 900 | ||
905 | kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; | 901 | kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; |
906 | 902 | ||
907 | QClipboard *cb = QApplication::clipboard(); | 903 | QClipboard *cb = QApplication::clipboard(); |
908 | cb->setText( clipText ); | 904 | cb->setText( clipText ); |
909 | } | 905 | } |
910 | 906 | ||
911 | void KABCore::cutContacts() | 907 | void KABCore::cutContacts() |
912 | { | 908 | { |
913 | QStringList uidList = mViewManager->selectedUids(); | 909 | QStringList uidList = mViewManager->selectedUids(); |
914 | 910 | ||
915 | //US if ( uidList.size() > 0 ) { | 911 | //US if ( uidList.size() > 0 ) { |
916 | if ( uidList.count() > 0 ) { | 912 | if ( uidList.count() > 0 ) { |
917 | PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); | 913 | PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); |
918 | UndoStack::instance()->push( command ); | 914 | UndoStack::instance()->push( command ); |
919 | RedoStack::instance()->clear(); | 915 | RedoStack::instance()->clear(); |
920 | 916 | ||
921 | setModified( true ); | 917 | setModified( true ); |
922 | } | 918 | } |
923 | } | 919 | } |
924 | 920 | ||
925 | void KABCore::pasteContacts() | 921 | void KABCore::pasteContacts() |
926 | { | 922 | { |
927 | QClipboard *cb = QApplication::clipboard(); | 923 | QClipboard *cb = QApplication::clipboard(); |
928 | 924 | ||
929 | KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); | 925 | KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); |
930 | 926 | ||
931 | pasteContacts( list ); | 927 | pasteContacts( list ); |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 2f286e0..ec69b11 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1,233 +1,234 @@ | |||
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> | 16 | #include <qspinbox.h> |
17 | #include <qcheckbox.h> | 17 | #include <qcheckbox.h> |
18 | #include <qmap.h> | 18 | #include <qmap.h> |
19 | #include <qwmatrix.h> | 19 | #include <qwmatrix.h> |
20 | #include <qtextbrowser.h> | 20 | #include <qtextbrowser.h> |
21 | #include <qtextstream.h> | 21 | #include <qtextstream.h> |
22 | #ifndef DESKTOP_VERSION | 22 | #ifndef DESKTOP_VERSION |
23 | #include <qpe/global.h> | 23 | #include <qpe/global.h> |
24 | #include <qpe/qpemenubar.h> | 24 | #include <qpe/qpemenubar.h> |
25 | #include <qpe/qpetoolbar.h> | 25 | #include <qpe/qpetoolbar.h> |
26 | #include <qpe/resource.h> | 26 | #include <qpe/resource.h> |
27 | #include <qpe/qpeapplication.h> | 27 | #include <qpe/qpeapplication.h> |
28 | #include <qtopia/alarmserver.h> | 28 | #include <qtopia/alarmserver.h> |
29 | #include <qtopia/qcopenvelope_qws.h> | 29 | #include <qtopia/qcopenvelope_qws.h> |
30 | #include <unistd.h> // for sleep | 30 | #include <unistd.h> // for sleep |
31 | #else | 31 | #else |
32 | #include <qmenubar.h> | 32 | #include <qmenubar.h> |
33 | #include <qtoolbar.h> | 33 | #include <qtoolbar.h> |
34 | #include <qapplication.h> | 34 | #include <qapplication.h> |
35 | //#include <resource.h> | 35 | //#include <resource.h> |
36 | 36 | ||
37 | #endif | 37 | #endif |
38 | #include <libkcal/calendarlocal.h> | 38 | #include <libkcal/calendarlocal.h> |
39 | #include <libkcal/todo.h> | 39 | #include <libkcal/todo.h> |
40 | #include <libkcal/phoneformat.h> | 40 | #include <libkcal/phoneformat.h> |
41 | #include <libkdepim/ksyncprofile.h> | 41 | #include <libkdepim/ksyncprofile.h> |
42 | #include <libkdepim/phoneaccess.h> | ||
42 | #include <libkcal/kincidenceformatter.h> | 43 | #include <libkcal/kincidenceformatter.h> |
43 | #include <libkdepim/kpimglobalprefs.h> | 44 | #include <libkdepim/kpimglobalprefs.h> |
44 | 45 | ||
45 | #include "calendarview.h" | 46 | #include "calendarview.h" |
46 | #include "koviewmanager.h" | 47 | #include "koviewmanager.h" |
47 | #include "datenavigator.h" | 48 | #include "datenavigator.h" |
48 | #include "koagendaview.h" | 49 | #include "koagendaview.h" |
49 | #include "koagenda.h" | 50 | #include "koagenda.h" |
50 | #include "kodialogmanager.h" | 51 | #include "kodialogmanager.h" |
51 | #include "kdialogbase.h" | 52 | #include "kdialogbase.h" |
52 | #include "kapplication.h" | 53 | #include "kapplication.h" |
53 | #include "kofilterview.h" | 54 | #include "kofilterview.h" |
54 | #include "kstandarddirs.h" | 55 | #include "kstandarddirs.h" |
55 | #include "koprefs.h" | 56 | #include "koprefs.h" |
56 | #include "kfiledialog.h" | 57 | #include "kfiledialog.h" |
57 | #include "koglobals.h" | 58 | #include "koglobals.h" |
58 | #include "kglobal.h" | 59 | #include "kglobal.h" |
59 | #include "klocale.h" | 60 | #include "klocale.h" |
60 | #include "kconfig.h" | 61 | #include "kconfig.h" |
61 | #include "simplealarmclient.h" | 62 | #include "simplealarmclient.h" |
62 | #include "externalapphandler.h" | 63 | #include "externalapphandler.h" |
63 | 64 | ||
64 | using namespace KCal; | 65 | using namespace KCal; |
65 | #ifndef _WIN32_ | 66 | #ifndef _WIN32_ |
66 | #include <unistd.h> | 67 | #include <unistd.h> |
67 | #else | 68 | #else |
68 | #include "koimportoldialog.h" | 69 | #include "koimportoldialog.h" |
69 | #endif | 70 | #endif |
70 | #include "mainwindow.h" | 71 | #include "mainwindow.h" |
71 | 72 | ||
72 | class KOex2phonePrefs : public QDialog | 73 | class KOex2phonePrefs : public QDialog |
73 | { | 74 | { |
74 | public: | 75 | public: |
75 | KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : | 76 | KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : |
76 | QDialog( parent, name, true ) | 77 | QDialog( parent, name, true ) |
77 | { | 78 | { |
78 | setCaption( i18n("Export to phone options") ); | 79 | setCaption( i18n("Export to phone options") ); |
79 | QVBoxLayout* lay = new QVBoxLayout( this ); | 80 | QVBoxLayout* lay = new QVBoxLayout( this ); |
80 | lay->setSpacing( 3 ); | 81 | lay->setSpacing( 3 ); |
81 | lay->setMargin( 3 ); | 82 | lay->setMargin( 3 ); |
82 | QLabel *lab; | 83 | QLabel *lab; |
83 | lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); | 84 | lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); |
84 | lab->setAlignment (AlignHCenter ); | 85 | lab->setAlignment (AlignHCenter ); |
85 | QHBox* temphb; | 86 | QHBox* temphb; |
86 | temphb = new QHBox( this ); | 87 | temphb = new QHBox( this ); |
87 | new QLabel( i18n("I/O device: "), temphb ); | 88 | new QLabel( i18n("I/O device: "), temphb ); |
88 | mPhoneDevice = new QLineEdit( temphb); | 89 | mPhoneDevice = new QLineEdit( temphb); |
89 | lay->addWidget( temphb ); | 90 | lay->addWidget( temphb ); |
90 | temphb = new QHBox( this ); | 91 | temphb = new QHBox( this ); |
91 | new QLabel( i18n("Connection: "), temphb ); | 92 | new QLabel( i18n("Connection: "), temphb ); |
92 | mPhoneConnection = new QLineEdit( temphb); | 93 | mPhoneConnection = new QLineEdit( temphb); |
93 | lay->addWidget( temphb ); | 94 | lay->addWidget( temphb ); |
94 | temphb = new QHBox( this ); | 95 | temphb = new QHBox( this ); |
95 | new QLabel( i18n("Model(opt.): "), temphb ); | 96 | new QLabel( i18n("Model(opt.): "), temphb ); |
96 | mPhoneModel = new QLineEdit( temphb); | 97 | mPhoneModel = new QLineEdit( temphb); |
97 | lay->addWidget( temphb ); | 98 | lay->addWidget( temphb ); |
98 | mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); | 99 | mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); |
99 | mWriteBackFuture->setChecked( true ); | 100 | mWriteBackFuture->setChecked( true ); |
100 | lay->addWidget( mWriteBackFuture ); | 101 | lay->addWidget( mWriteBackFuture ); |
101 | temphb = new QHBox( this ); | 102 | temphb = new QHBox( this ); |
102 | new QLabel( i18n("Max. weeks in future: ") , temphb ); | 103 | new QLabel( i18n("Max. weeks in future: ") , temphb ); |
103 | mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); | 104 | mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); |
104 | mWriteBackFutureWeeks->setValue( 8 ); | 105 | mWriteBackFutureWeeks->setValue( 8 ); |
105 | lay->addWidget( temphb ); | 106 | lay->addWidget( temphb ); |
106 | lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); | 107 | lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); |
107 | lab->setAlignment (AlignHCenter ); | 108 | lab->setAlignment (AlignHCenter ); |
108 | QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); | 109 | QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); |
109 | lay->addWidget( ok ); | 110 | lay->addWidget( ok ); |
110 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); | 111 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); |
111 | lay->addWidget( cancel ); | 112 | lay->addWidget( cancel ); |
112 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); | 113 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); |
113 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); | 114 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); |
114 | resize( 220, 240 ); | 115 | resize( 220, 240 ); |
115 | 116 | ||
116 | } | 117 | } |
117 | 118 | ||
118 | public: | 119 | public: |
119 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; | 120 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; |
120 | QCheckBox* mWriteBackFuture; | 121 | QCheckBox* mWriteBackFuture; |
121 | QSpinBox* mWriteBackFutureWeeks; | 122 | QSpinBox* mWriteBackFutureWeeks; |
122 | }; | 123 | }; |
123 | 124 | ||
124 | int globalFlagBlockStartup; | 125 | int globalFlagBlockStartup; |
125 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : | 126 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : |
126 | QMainWindow( parent, name ) | 127 | QMainWindow( parent, name ) |
127 | { | 128 | { |
128 | mPassWordPiSync = "abc"; | 129 | mPassWordPiSync = "abc"; |
129 | #ifdef DESKTOP_VERSION | 130 | #ifdef DESKTOP_VERSION |
130 | setFont( QFont("Arial"), 14 ); | 131 | setFont( QFont("Arial"), 14 ); |
131 | #endif | 132 | #endif |
132 | mSyncActionDialog = 0; | 133 | mSyncActionDialog = 0; |
133 | mServerSocket = 0; | 134 | mServerSocket = 0; |
134 | mClosed = false; | 135 | mClosed = false; |
135 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; | 136 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; |
136 | QString confFile = locateLocal("config","korganizerrc"); | 137 | QString confFile = locateLocal("config","korganizerrc"); |
137 | QFileInfo finf ( confFile ); | 138 | QFileInfo finf ( confFile ); |
138 | bool showWarning = !finf.exists(); | 139 | bool showWarning = !finf.exists(); |
139 | setIcon(SmallIcon( "ko24" ) ); | 140 | setIcon(SmallIcon( "ko24" ) ); |
140 | mBlockAtStartup = true; | 141 | mBlockAtStartup = true; |
141 | mFlagKeyPressed = false; | 142 | mFlagKeyPressed = false; |
142 | setCaption("KOrganizer/Pi"); | 143 | setCaption("KOrganizer/Pi"); |
143 | KOPrefs *p = KOPrefs::instance(); | 144 | KOPrefs *p = KOPrefs::instance(); |
144 | KPimGlobalPrefs::instance()->setGlobalConfig(); | 145 | KPimGlobalPrefs::instance()->setGlobalConfig(); |
145 | // if ( QApplication::desktop()->height() > 480 ) { | 146 | // if ( QApplication::desktop()->height() > 480 ) { |
146 | // if ( p->mHourSize == 4 ) | 147 | // if ( p->mHourSize == 4 ) |
147 | // p->mHourSize = 6; | 148 | // p->mHourSize = 6; |
148 | // } | 149 | // } |
149 | if ( p->mHourSize > 18 ) | 150 | if ( p->mHourSize > 18 ) |
150 | p->mHourSize = 18; | 151 | p->mHourSize = 18; |
151 | QMainWindow::ToolBarDock tbd; | 152 | QMainWindow::ToolBarDock tbd; |
152 | if ( p->mToolBarHor ) { | 153 | if ( p->mToolBarHor ) { |
153 | if ( p->mToolBarUp ) | 154 | if ( p->mToolBarUp ) |
154 | tbd = Bottom; | 155 | tbd = Bottom; |
155 | else | 156 | else |
156 | tbd = Top; | 157 | tbd = Top; |
157 | } | 158 | } |
158 | else { | 159 | else { |
159 | if ( p->mToolBarUp ) | 160 | if ( p->mToolBarUp ) |
160 | tbd = Right; | 161 | tbd = Right; |
161 | else | 162 | else |
162 | tbd = Left; | 163 | tbd = Left; |
163 | } | 164 | } |
164 | if ( KOPrefs::instance()->mUseAppColors ) | 165 | if ( KOPrefs::instance()->mUseAppColors ) |
165 | QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); | 166 | QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); |
166 | globalFlagBlockStartup = 1; | 167 | globalFlagBlockStartup = 1; |
167 | iconToolBar = new QPEToolBar( this ); | 168 | iconToolBar = new QPEToolBar( this ); |
168 | addToolBar (iconToolBar , tbd ); | 169 | addToolBar (iconToolBar , tbd ); |
169 | mBlockSaveFlag = false; | 170 | mBlockSaveFlag = false; |
170 | mCalendarModifiedFlag = false; | 171 | mCalendarModifiedFlag = false; |
171 | 172 | ||
172 | QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); | 173 | QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); |
173 | splash->setAlignment ( AlignCenter ); | 174 | splash->setAlignment ( AlignCenter ); |
174 | setCentralWidget( splash ); | 175 | setCentralWidget( splash ); |
175 | #ifndef DESKTOP_VERSION | 176 | #ifndef DESKTOP_VERSION |
176 | showMaximized(); | 177 | showMaximized(); |
177 | #endif | 178 | #endif |
178 | //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); | 179 | //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); |
179 | setDefaultPreferences(); | 180 | setDefaultPreferences(); |
180 | mCalendar = new CalendarLocal(); | 181 | mCalendar = new CalendarLocal(); |
181 | mView = new CalendarView( mCalendar, this,"mCalendar " ); | 182 | mView = new CalendarView( mCalendar, this,"mCalendar " ); |
182 | mView->hide(); | 183 | mView->hide(); |
183 | //mView->resize(splash->size() ); | 184 | //mView->resize(splash->size() ); |
184 | initActions(); | 185 | initActions(); |
185 | #ifndef DESKTOP_VERSION | 186 | #ifndef DESKTOP_VERSION |
186 | iconToolBar->show(); | 187 | iconToolBar->show(); |
187 | qApp->processEvents(); | 188 | qApp->processEvents(); |
188 | #endif | 189 | #endif |
189 | //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); | 190 | //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); |
190 | int vh = height() ; | 191 | int vh = height() ; |
191 | int vw = width(); | 192 | int vw = width(); |
192 | //qDebug("Toolbar hei %d ",iconToolBar->height() ); | 193 | //qDebug("Toolbar hei %d ",iconToolBar->height() ); |
193 | if ( iconToolBar->orientation () == Qt:: Horizontal ) { | 194 | if ( iconToolBar->orientation () == Qt:: Horizontal ) { |
194 | vh -= iconToolBar->height(); | 195 | vh -= iconToolBar->height(); |
195 | } else { | 196 | } else { |
196 | vw -= iconToolBar->height(); | 197 | vw -= iconToolBar->height(); |
197 | } | 198 | } |
198 | //mView->setMaximumSize( splash->size() ); | 199 | //mView->setMaximumSize( splash->size() ); |
199 | //mView->resize( splash->size() ); | 200 | //mView->resize( splash->size() ); |
200 | //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); | 201 | //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); |
201 | mView->readSettings(); | 202 | mView->readSettings(); |
202 | bool newFile = false; | 203 | bool newFile = false; |
203 | if( !QFile::exists( defaultFileName() ) ) { | 204 | if( !QFile::exists( defaultFileName() ) ) { |
204 | QFileInfo finfo ( defaultFileName() ); | 205 | QFileInfo finfo ( defaultFileName() ); |
205 | QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); | 206 | QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); |
206 | qDebug("oldfile %s ", oldFile.latin1()); | 207 | qDebug("oldfile %s ", oldFile.latin1()); |
207 | QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; | 208 | QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; |
208 | finfo.setFile( oldFile ); | 209 | finfo.setFile( oldFile ); |
209 | if (finfo.exists() ) { | 210 | if (finfo.exists() ) { |
210 | KMessageBox::information( this, message); | 211 | KMessageBox::information( this, message); |
211 | mView->openCalendar( oldFile ); | 212 | mView->openCalendar( oldFile ); |
212 | qApp->processEvents(); | 213 | qApp->processEvents(); |
213 | } else { | 214 | } else { |
214 | oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); | 215 | oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); |
215 | finfo.setFile( oldFile ); | 216 | finfo.setFile( oldFile ); |
216 | if (finfo.exists() ) { | 217 | if (finfo.exists() ) { |
217 | KMessageBox::information( this, message); | 218 | KMessageBox::information( this, message); |
218 | mView->openCalendar( oldFile ); | 219 | mView->openCalendar( oldFile ); |
219 | qApp->processEvents(); | 220 | qApp->processEvents(); |
220 | } | 221 | } |
221 | } | 222 | } |
222 | mView->saveCalendar( defaultFileName() ); | 223 | mView->saveCalendar( defaultFileName() ); |
223 | newFile = true; | 224 | newFile = true; |
224 | } | 225 | } |
225 | 226 | ||
226 | QTime neededSaveTime = QDateTime::currentDateTime().time(); | 227 | QTime neededSaveTime = QDateTime::currentDateTime().time(); |
227 | mView->openCalendar( defaultFileName() ); | 228 | mView->openCalendar( defaultFileName() ); |
228 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); | 229 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); |
229 | qDebug("KO: Calendar loading time: %d ms",msNeeded ); | 230 | qDebug("KO: Calendar loading time: %d ms",msNeeded ); |
230 | 231 | ||
231 | if ( KOPrefs::instance()->mLanguageChanged ) { | 232 | if ( KOPrefs::instance()->mLanguageChanged ) { |
232 | KOPrefs::instance()->setCategoryDefaults(); | 233 | KOPrefs::instance()->setCategoryDefaults(); |
233 | int count = mView->addCategories(); | 234 | int count = mView->addCategories(); |
@@ -1043,386 +1044,386 @@ int MainWindow::ringSync() | |||
1043 | setCaption(i18n("Multiple sync in progress ... please wait!") ); | 1044 | setCaption(i18n("Multiple sync in progress ... please wait!") ); |
1044 | while ( timer.elapsed () < 2000 ) { | 1045 | while ( timer.elapsed () < 2000 ) { |
1045 | qApp->processEvents(); | 1046 | qApp->processEvents(); |
1046 | #ifndef _WIN32_ | 1047 | #ifndef _WIN32_ |
1047 | sleep (1); | 1048 | sleep (1); |
1048 | #endif | 1049 | #endif |
1049 | } | 1050 | } |
1050 | 1051 | ||
1051 | } | 1052 | } |
1052 | 1053 | ||
1053 | } | 1054 | } |
1054 | delete temp; | 1055 | delete temp; |
1055 | return syncedProfiles; | 1056 | return syncedProfiles; |
1056 | } | 1057 | } |
1057 | 1058 | ||
1058 | void MainWindow::multiSync( bool askforPrefs ) | 1059 | void MainWindow::multiSync( bool askforPrefs ) |
1059 | { | 1060 | { |
1060 | if (mBlockSaveFlag) | 1061 | if (mBlockSaveFlag) |
1061 | return; | 1062 | return; |
1062 | mBlockSaveFlag = true; | 1063 | mBlockSaveFlag = true; |
1063 | QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); | 1064 | QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); |
1064 | if ( QMessageBox::information( this, i18n("KO/Pi Sync"), | 1065 | if ( QMessageBox::information( this, i18n("KO/Pi Sync"), |
1065 | question, | 1066 | question, |
1066 | i18n("Yes"), i18n("No"), | 1067 | i18n("Yes"), i18n("No"), |
1067 | 0, 0 ) != 0 ) { | 1068 | 0, 0 ) != 0 ) { |
1068 | mBlockSaveFlag = false; | 1069 | mBlockSaveFlag = false; |
1069 | setCaption(i18n("Aborted! Nothing synced!")); | 1070 | setCaption(i18n("Aborted! Nothing synced!")); |
1070 | return; | 1071 | return; |
1071 | } | 1072 | } |
1072 | mView->setSyncDevice(i18n("Multiple profiles") ); | 1073 | mView->setSyncDevice(i18n("Multiple profiles") ); |
1073 | KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs; | 1074 | KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs; |
1074 | if ( askforPrefs ) { | 1075 | if ( askforPrefs ) { |
1075 | mView->edit_sync_options(); | 1076 | mView->edit_sync_options(); |
1076 | KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs; | 1077 | KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs; |
1077 | } | 1078 | } |
1078 | setCaption(i18n("Multiple sync started.") ); | 1079 | setCaption(i18n("Multiple sync started.") ); |
1079 | qApp->processEvents(); | 1080 | qApp->processEvents(); |
1080 | int num = ringSync() ; | 1081 | int num = ringSync() ; |
1081 | if ( num > 1 ) | 1082 | if ( num > 1 ) |
1082 | ringSync(); | 1083 | ringSync(); |
1083 | mBlockSaveFlag = false; | 1084 | mBlockSaveFlag = false; |
1084 | if ( num ) | 1085 | if ( num ) |
1085 | save(); | 1086 | save(); |
1086 | if ( num ) | 1087 | if ( num ) |
1087 | setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); | 1088 | setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); |
1088 | else | 1089 | else |
1089 | setCaption(i18n("Nothing synced! No profiles defined for multisync!")); | 1090 | setCaption(i18n("Nothing synced! No profiles defined for multisync!")); |
1090 | return; | 1091 | return; |
1091 | } | 1092 | } |
1092 | void MainWindow::slotSyncMenu( int action ) | 1093 | void MainWindow::slotSyncMenu( int action ) |
1093 | { | 1094 | { |
1094 | qDebug("syncaction %d ", action); | 1095 | qDebug("syncaction %d ", action); |
1095 | if ( action == 0 ) { | 1096 | if ( action == 0 ) { |
1096 | 1097 | ||
1097 | // seems to be a Qt2 event handling bug | 1098 | // seems to be a Qt2 event handling bug |
1098 | // syncmenu.clear causes a segfault at first time | 1099 | // syncmenu.clear causes a segfault at first time |
1099 | // when we call it after the main event loop, it is ok | 1100 | // when we call it after the main event loop, it is ok |
1100 | // same behaviour when calling OM/Pi via QCOP for the first time | 1101 | // same behaviour when calling OM/Pi via QCOP for the first time |
1101 | QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); | 1102 | QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); |
1102 | //confSync(); | 1103 | //confSync(); |
1103 | 1104 | ||
1104 | return; | 1105 | return; |
1105 | } | 1106 | } |
1106 | if ( action == 1 ) { | 1107 | if ( action == 1 ) { |
1107 | multiSync( true ); | 1108 | multiSync( true ); |
1108 | return; | 1109 | return; |
1109 | } | 1110 | } |
1110 | if ( action == 2 ) { | 1111 | if ( action == 2 ) { |
1111 | enableQuick(); | 1112 | enableQuick(); |
1112 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | 1113 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); |
1113 | return; | 1114 | return; |
1114 | } | 1115 | } |
1115 | if ( action == 3 ) { | 1116 | if ( action == 3 ) { |
1116 | delete mServerSocket; | 1117 | delete mServerSocket; |
1117 | mServerSocket = 0; | 1118 | mServerSocket = 0; |
1118 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | 1119 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); |
1119 | return; | 1120 | return; |
1120 | } | 1121 | } |
1121 | 1122 | ||
1122 | if (mBlockSaveFlag) | 1123 | if (mBlockSaveFlag) |
1123 | return; | 1124 | return; |
1124 | mBlockSaveFlag = true; | 1125 | mBlockSaveFlag = true; |
1125 | mCurrentSyncProfile = action - 1000 ; | 1126 | mCurrentSyncProfile = action - 1000 ; |
1126 | mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] ); | 1127 | mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] ); |
1127 | mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); | 1128 | mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); |
1128 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | 1129 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); |
1129 | KSyncProfile* temp = new KSyncProfile (); | 1130 | KSyncProfile* temp = new KSyncProfile (); |
1130 | temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); | 1131 | temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); |
1131 | temp->readConfig(&config); | 1132 | temp->readConfig(&config); |
1132 | KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); | 1133 | KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); |
1133 | KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs(); | 1134 | KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs(); |
1134 | KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); | 1135 | KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); |
1135 | KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); | 1136 | KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); |
1136 | KOPrefs::instance()->mWriteBackInFuture = 0; | 1137 | KOPrefs::instance()->mWriteBackInFuture = 0; |
1137 | if ( temp->getWriteBackFuture() ) | 1138 | if ( temp->getWriteBackFuture() ) |
1138 | KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); | 1139 | KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); |
1139 | KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync(); | 1140 | KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync(); |
1140 | if ( action == 1000 ) { | 1141 | if ( action == 1000 ) { |
1141 | syncSharp(); | 1142 | syncSharp(); |
1142 | 1143 | ||
1143 | } else if ( action == 1001 ) { | 1144 | } else if ( action == 1001 ) { |
1144 | syncLocalFile(); | 1145 | syncLocalFile(); |
1145 | 1146 | ||
1146 | } else if ( action == 1002 ) { | 1147 | } else if ( action == 1002 ) { |
1147 | quickSyncLocalFile(); | 1148 | quickSyncLocalFile(); |
1148 | 1149 | ||
1149 | } else if ( action >= 1003 ) { | 1150 | } else if ( action >= 1003 ) { |
1150 | if ( temp->getIsLocalFileSync() ) { | 1151 | if ( temp->getIsLocalFileSync() ) { |
1151 | if ( syncWithFile( temp->getRemoteFileName( ), false ) ) | 1152 | if ( syncWithFile( temp->getRemoteFileName( ), false ) ) |
1152 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); | 1153 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); |
1153 | } else { | 1154 | } else { |
1154 | if ( temp->getIsPhoneSync() ) { | 1155 | if ( temp->getIsPhoneSync() ) { |
1155 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; | 1156 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; |
1156 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); | 1157 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); |
1157 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); | 1158 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); |
1158 | syncPhone(); | 1159 | syncPhone(); |
1159 | } else if ( temp->getIsPiSync() ) { | 1160 | } else if ( temp->getIsPiSync() ) { |
1160 | mPassWordPiSync = temp->getRemotePw(); | 1161 | mPassWordPiSync = temp->getRemotePw(); |
1161 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); | 1162 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); |
1162 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); | 1163 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); |
1163 | syncPi(); | 1164 | syncPi(); |
1164 | } else | 1165 | } else |
1165 | syncRemote( temp ); | 1166 | syncRemote( temp ); |
1166 | 1167 | ||
1167 | } | 1168 | } |
1168 | } | 1169 | } |
1169 | delete temp; | 1170 | delete temp; |
1170 | mBlockSaveFlag = false; | 1171 | mBlockSaveFlag = false; |
1171 | } | 1172 | } |
1172 | void MainWindow::exportToPhone( int mode ) | 1173 | void MainWindow::exportToPhone( int mode ) |
1173 | { | 1174 | { |
1174 | 1175 | ||
1175 | //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); | 1176 | //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); |
1176 | //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); | 1177 | //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); |
1177 | KOex2phonePrefs ex2phone; | 1178 | KOex2phonePrefs ex2phone; |
1178 | 1179 | ||
1179 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); | 1180 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); |
1180 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); | 1181 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); |
1181 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); | 1182 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); |
1182 | if ( mode == 1 ) | 1183 | if ( mode == 1 ) |
1183 | ex2phone.setCaption(i18n("Export complete calendar")); | 1184 | ex2phone.setCaption(i18n("Export complete calendar")); |
1184 | if ( mode == 2 ) | 1185 | if ( mode == 2 ) |
1185 | ex2phone.setCaption(i18n("Export filtered calendar")); | 1186 | ex2phone.setCaption(i18n("Export filtered calendar")); |
1186 | 1187 | ||
1187 | if ( !ex2phone.exec() ) { | 1188 | if ( !ex2phone.exec() ) { |
1188 | return; | 1189 | return; |
1189 | } | 1190 | } |
1190 | KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); | 1191 | KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); |
1191 | KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); | 1192 | KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); |
1192 | KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); | 1193 | KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); |
1193 | 1194 | ||
1194 | int inFuture = 0; | 1195 | int inFuture = 0; |
1195 | if ( ex2phone.mWriteBackFuture->isChecked() ) | 1196 | if ( ex2phone.mWriteBackFuture->isChecked() ) |
1196 | inFuture = ex2phone.mWriteBackFutureWeeks->value(); | 1197 | inFuture = ex2phone.mWriteBackFutureWeeks->value(); |
1197 | QPtrList<Incidence> delSel; | 1198 | QPtrList<Incidence> delSel; |
1198 | if ( mode == 1 ) | 1199 | if ( mode == 1 ) |
1199 | delSel = mCalendar->rawIncidences(); | 1200 | delSel = mCalendar->rawIncidences(); |
1200 | if ( mode == 2 ) | 1201 | if ( mode == 2 ) |
1201 | delSel = mCalendar->incidences(); | 1202 | delSel = mCalendar->incidences(); |
1202 | CalendarLocal* cal = new CalendarLocal(); | 1203 | CalendarLocal* cal = new CalendarLocal(); |
1203 | cal->setLocalTime(); | 1204 | cal->setLocalTime(); |
1204 | Incidence *incidence = delSel.first(); | 1205 | Incidence *incidence = delSel.first(); |
1205 | QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); | 1206 | QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); |
1206 | QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); | 1207 | QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); |
1207 | while ( incidence ) { | 1208 | while ( incidence ) { |
1208 | if ( incidence->type() != "Journal" ) { | 1209 | if ( incidence->type() != "Journal" ) { |
1209 | bool add = true; | 1210 | bool add = true; |
1210 | if ( inFuture ) { | 1211 | if ( inFuture ) { |
1211 | QDateTime dt; | 1212 | QDateTime dt; |
1212 | if ( incidence->type() == "Todo" ) { | 1213 | if ( incidence->type() == "Todo" ) { |
1213 | Todo * t = (Todo*)incidence; | 1214 | Todo * t = (Todo*)incidence; |
1214 | if ( t->hasDueDate() ) | 1215 | if ( t->hasDueDate() ) |
1215 | dt = t->dtDue(); | 1216 | dt = t->dtDue(); |
1216 | else | 1217 | else |
1217 | dt = cur.addSecs( 62 ); | 1218 | dt = cur.addSecs( 62 ); |
1218 | } | 1219 | } |
1219 | else { | 1220 | else { |
1220 | bool ok; | 1221 | bool ok; |
1221 | dt = incidence->getNextOccurence( cur, &ok ); | 1222 | dt = incidence->getNextOccurence( cur, &ok ); |
1222 | if ( !ok ) | 1223 | if ( !ok ) |
1223 | dt = cur.addSecs( -62 ); | 1224 | dt = cur.addSecs( -62 ); |
1224 | } | 1225 | } |
1225 | if ( dt < cur || dt > end ) { | 1226 | if ( dt < cur || dt > end ) { |
1226 | add = false; | 1227 | add = false; |
1227 | } | 1228 | } |
1228 | } | 1229 | } |
1229 | if ( add ) { | 1230 | if ( add ) { |
1230 | Incidence *in = incidence->clone(); | 1231 | Incidence *in = incidence->clone(); |
1231 | cal->addIncidence( in ); | 1232 | cal->addIncidence( in ); |
1232 | } | 1233 | } |
1233 | } | 1234 | } |
1234 | incidence = delSel.next(); | 1235 | incidence = delSel.next(); |
1235 | } | 1236 | } |
1236 | PhoneFormat::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, | 1237 | PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, |
1237 | KPimGlobalPrefs::instance()->mEx2PhoneConnection, | 1238 | KPimGlobalPrefs::instance()->mEx2PhoneConnection, |
1238 | KPimGlobalPrefs::instance()->mEx2PhoneModel ); | 1239 | KPimGlobalPrefs::instance()->mEx2PhoneModel ); |
1239 | 1240 | ||
1240 | setCaption( i18n("Writing to phone...")); | 1241 | setCaption( i18n("Writing to phone...")); |
1241 | if ( PhoneFormat::writeToPhone( cal ) ) | 1242 | if ( PhoneFormat::writeToPhone( cal ) ) |
1242 | setCaption( i18n("Export to phone successful!")); | 1243 | setCaption( i18n("Export to phone successful!")); |
1243 | else | 1244 | else |
1244 | setCaption( i18n("Error exporting to phone!")); | 1245 | setCaption( i18n("Error exporting to phone!")); |
1245 | delete cal; | 1246 | delete cal; |
1246 | } | 1247 | } |
1247 | 1248 | ||
1248 | 1249 | ||
1249 | void MainWindow::setDefaultPreferences() | 1250 | void MainWindow::setDefaultPreferences() |
1250 | { | 1251 | { |
1251 | KOPrefs *p = KOPrefs::instance(); | 1252 | KOPrefs *p = KOPrefs::instance(); |
1252 | 1253 | ||
1253 | p->mCompactDialogs = true; | 1254 | p->mCompactDialogs = true; |
1254 | p->mConfirm = true; | 1255 | p->mConfirm = true; |
1255 | // p->mEnableQuickTodo = false; | 1256 | // p->mEnableQuickTodo = false; |
1256 | 1257 | ||
1257 | } | 1258 | } |
1258 | 1259 | ||
1259 | QString MainWindow::resourcePath() | 1260 | QString MainWindow::resourcePath() |
1260 | { | 1261 | { |
1261 | return KGlobal::iconLoader()->iconPath(); | 1262 | return KGlobal::iconLoader()->iconPath(); |
1262 | } | 1263 | } |
1263 | 1264 | ||
1264 | void MainWindow::displayText( QString text ,QString cap ) | 1265 | void MainWindow::displayText( QString text ,QString cap ) |
1265 | { | 1266 | { |
1266 | QDialog dia( this, "name", true ); ; | 1267 | QDialog dia( this, "name", true ); ; |
1267 | dia.setCaption( cap ); | 1268 | dia.setCaption( cap ); |
1268 | QVBoxLayout* lay = new QVBoxLayout( &dia ); | 1269 | QVBoxLayout* lay = new QVBoxLayout( &dia ); |
1269 | lay->setSpacing( 3 ); | 1270 | lay->setSpacing( 3 ); |
1270 | lay->setMargin( 3 ); | 1271 | lay->setMargin( 3 ); |
1271 | QTextBrowser tb ( &dia ); | 1272 | QTextBrowser tb ( &dia ); |
1272 | lay->addWidget( &tb ); | 1273 | lay->addWidget( &tb ); |
1273 | tb.setText( text ); | 1274 | tb.setText( text ); |
1274 | #ifdef DESKTOP_VERSION | 1275 | #ifdef DESKTOP_VERSION |
1275 | dia.resize( 640, 480); | 1276 | dia.resize( 640, 480); |
1276 | #else | 1277 | #else |
1277 | dia.showMaximized(); | 1278 | dia.showMaximized(); |
1278 | #endif | 1279 | #endif |
1279 | dia.exec(); | 1280 | dia.exec(); |
1280 | } | 1281 | } |
1281 | void MainWindow::displayFile( QString fn, QString cap ) | 1282 | void MainWindow::displayFile( QString fn, QString cap ) |
1282 | { | 1283 | { |
1283 | QString fileName = resourcePath() + fn; | 1284 | QString fileName = resourcePath() + fn; |
1284 | QString text; | 1285 | QString text; |
1285 | QFile file( fileName ); | 1286 | QFile file( fileName ); |
1286 | if (!file.open( IO_ReadOnly ) ) { | 1287 | if (!file.open( IO_ReadOnly ) ) { |
1287 | return ; | 1288 | return ; |
1288 | 1289 | ||
1289 | } | 1290 | } |
1290 | QTextStream ts( &file ); | 1291 | QTextStream ts( &file ); |
1291 | text = ts.read(); | 1292 | text = ts.read(); |
1292 | file.close(); | 1293 | file.close(); |
1293 | displayText( text, cap); | 1294 | displayText( text, cap); |
1294 | } | 1295 | } |
1295 | void MainWindow::features() | 1296 | void MainWindow::features() |
1296 | { | 1297 | { |
1297 | 1298 | ||
1298 | displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") ); | 1299 | displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") ); |
1299 | } | 1300 | } |
1300 | 1301 | ||
1301 | void MainWindow::usertrans() | 1302 | void MainWindow::usertrans() |
1302 | { | 1303 | { |
1303 | 1304 | ||
1304 | displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") ); | 1305 | displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") ); |
1305 | } | 1306 | } |
1306 | 1307 | ||
1307 | void MainWindow::synchowto() | 1308 | void MainWindow::synchowto() |
1308 | { | 1309 | { |
1309 | #if 0 | 1310 | #if 0 |
1310 | QPtrList<Incidence> er = mCalendar->rawIncidences(); | 1311 | QPtrList<Incidence> er = mCalendar->rawIncidences(); |
1311 | Incidence* inR = er.first(); | 1312 | Incidence* inR = er.first(); |
1312 | VCalFormat vf; | 1313 | VCalFormat vf; |
1313 | QString strout; | 1314 | QString strout; |
1314 | while ( inR ) { | 1315 | while ( inR ) { |
1315 | if ( inR->type() == "Todo" ) | 1316 | if ( inR->type() == "Todo" ) |
1316 | strout = vf.todoToString( (Todo *) inR ); | 1317 | strout = vf.todoToString( (Todo *) inR ); |
1317 | if ( inR->type() == "Event" ) | 1318 | if ( inR->type() == "Event" ) |
1318 | strout = vf.eventToString( (Event *) inR ); | 1319 | strout = vf.eventToString( (Event *) inR ); |
1319 | qDebug("incidence: \n%s\n ente\n\n",strout.latin1() ); | 1320 | qDebug("incidence: \n%s\n ente\n\n",strout.latin1() ); |
1320 | inR = er.next(); | 1321 | inR = er.next(); |
1321 | } | 1322 | } |
1322 | #endif | 1323 | #endif |
1323 | displayFile( "howtoSYNC.txt",i18n("KO/Pi Synchronization HowTo") ); | 1324 | displayFile( "howtoSYNC.txt",i18n("KO/Pi Synchronization HowTo") ); |
1324 | } | 1325 | } |
1325 | void MainWindow::faq() | 1326 | void MainWindow::faq() |
1326 | { | 1327 | { |
1327 | displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") ); | 1328 | displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") ); |
1328 | 1329 | ||
1329 | } | 1330 | } |
1330 | void MainWindow::whatsNew() | 1331 | void MainWindow::whatsNew() |
1331 | { | 1332 | { |
1332 | displayFile( "kopiWhatsNew.txt",i18n("KO/Pi Version Info") ); | 1333 | displayFile( "kopiWhatsNew.txt",i18n("KO/Pi Version Info") ); |
1333 | 1334 | ||
1334 | } | 1335 | } |
1335 | void MainWindow::licence() | 1336 | void MainWindow::licence() |
1336 | { | 1337 | { |
1337 | KApplication::showLicence(); | 1338 | KApplication::showLicence(); |
1338 | 1339 | ||
1339 | } | 1340 | } |
1340 | void MainWindow::about() | 1341 | void MainWindow::about() |
1341 | { | 1342 | { |
1342 | QString version; | 1343 | QString version; |
1343 | #include <../version> | 1344 | #include <../version> |
1344 | QMessageBox::about( this, i18n("About KOrganizer/Pi"), | 1345 | QMessageBox::about( this, i18n("About KOrganizer/Pi"), |
1345 | i18n("KOrganizer/Platform-independent\n") + | 1346 | i18n("KOrganizer/Platform-independent\n") + |
1346 | "(KO/Pi) " + version + " - " + | 1347 | "(KO/Pi) " + version + " - " + |
1347 | 1348 | ||
1348 | #ifdef DESKTOP_VERSION | 1349 | #ifdef DESKTOP_VERSION |
1349 | i18n("Desktop Edition\n") + | 1350 | i18n("Desktop Edition\n") + |
1350 | #else | 1351 | #else |
1351 | i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") + | 1352 | i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") + |
1352 | #endif | 1353 | #endif |
1353 | i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") ); | 1354 | i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") ); |
1354 | } | 1355 | } |
1355 | void MainWindow::keyBindings() | 1356 | void MainWindow::keyBindings() |
1356 | { | 1357 | { |
1357 | QString cap = i18n("Key bindings KOrganizer/Pi"); | 1358 | QString cap = i18n("Key bindings KOrganizer/Pi"); |
1358 | QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + | 1359 | QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + |
1359 | i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ | 1360 | i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ |
1360 | i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + | 1361 | i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + |
1361 | i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ | 1362 | i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ |
1362 | i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ | 1363 | i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ |
1363 | i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ | 1364 | i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ |
1364 | i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ | 1365 | i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ |
1365 | i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ | 1366 | i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ |
1366 | i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ | 1367 | i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ |
1367 | i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ | 1368 | i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ |
1368 | i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ | 1369 | i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ |
1369 | i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ | 1370 | i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ |
1370 | i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ | 1371 | i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ |
1371 | i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ | 1372 | i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ |
1372 | i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ | 1373 | i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ |
1373 | i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ | 1374 | i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ |
1374 | i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ | 1375 | i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ |
1375 | i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ | 1376 | i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ |
1376 | i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ | 1377 | i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ |
1377 | i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ | 1378 | i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ |
1378 | i18n("<p><h3>In agenda view:</h3></p>\n") + | 1379 | i18n("<p><h3>In agenda view:</h3></p>\n") + |
1379 | i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ | 1380 | i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ |
1380 | i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ | 1381 | i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ |
1381 | i18n("<p><h3>In todo view:</h3></p>\n") + | 1382 | i18n("<p><h3>In todo view:</h3></p>\n") + |
1382 | i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ | 1383 | i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ |
1383 | i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ | 1384 | i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ |
1384 | i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ | 1385 | i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ |
1385 | i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ | 1386 | i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ |
1386 | i18n("<p><h3>In list view:</h3></p>\n") + | 1387 | i18n("<p><h3>In list view:</h3></p>\n") + |
1387 | i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ | 1388 | i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ |
1388 | i18n("<p><b>return</b>: Select item+one step down</p>\n")+ | 1389 | i18n("<p><b>return</b>: Select item+one step down</p>\n")+ |
1389 | i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ | 1390 | i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ |
1390 | i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ | 1391 | i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ |
1391 | i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ | 1392 | i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ |
1392 | i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ | 1393 | i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ |
1393 | i18n("<p><h3>In event/todo viewer:</h3></p>\n") + | 1394 | i18n("<p><h3>In event/todo viewer:</h3></p>\n") + |
1394 | i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ | 1395 | i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ |
1395 | i18n("<p><b>A</b>: Show agenda view.</p>\n")+ | 1396 | i18n("<p><b>A</b>: Show agenda view.</p>\n")+ |
1396 | i18n("<p><b>E</b>: Edit item</p>\n") + | 1397 | i18n("<p><b>E</b>: Edit item</p>\n") + |
1397 | i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + | 1398 | i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + |
1398 | i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + | 1399 | i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + |
1399 | i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ | 1400 | i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ |
1400 | i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ | 1401 | i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ |
1401 | i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ | 1402 | i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ |
1402 | i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ | 1403 | i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ |
1403 | i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ | 1404 | i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ |
1404 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + | 1405 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + |
1405 | i18n("<p><b>White</b>: Item readonly</p>\n"); | 1406 | i18n("<p><b>White</b>: Item readonly</p>\n"); |
1406 | displayText( text, cap); | 1407 | displayText( text, cap); |
1407 | 1408 | ||
1408 | } | 1409 | } |
1409 | void MainWindow::aboutAutoSaving() | 1410 | void MainWindow::aboutAutoSaving() |
1410 | { | 1411 | { |
1411 | QMessageBox* msg; | 1412 | QMessageBox* msg; |
1412 | msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"), | 1413 | msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"), |
1413 | i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon, | 1414 | i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon, |
1414 | QMessageBox::Ok, | 1415 | QMessageBox::Ok, |
1415 | QMessageBox::NoButton, | 1416 | QMessageBox::NoButton, |
1416 | QMessageBox::NoButton); | 1417 | QMessageBox::NoButton); |
1417 | msg->exec(); | 1418 | msg->exec(); |
1418 | delete msg; | 1419 | delete msg; |
1419 | 1420 | ||
1420 | 1421 | ||
1421 | } | 1422 | } |
1422 | void MainWindow::aboutKnownBugs() | 1423 | void MainWindow::aboutKnownBugs() |
1423 | { | 1424 | { |
1424 | QMessageBox* msg; | 1425 | QMessageBox* msg; |
1425 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), | 1426 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), |
1426 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ | 1427 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ |
1427 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ | 1428 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ |
1428 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") + | 1429 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") + |
diff --git a/libkcal/libkcal.pro b/libkcal/libkcal.pro index 7a0bd22..171c726 100644 --- a/libkcal/libkcal.pro +++ b/libkcal/libkcal.pro | |||
@@ -1,106 +1,106 @@ | |||
1 | TEMPLATE= lib | 1 | TEMPLATE= lib |
2 | CONFIG += qt warn_on | 2 | CONFIG += qt warn_on |
3 | TARGET = microkcal | 3 | TARGET = microkcal |
4 | 4 | ||
5 | include( ../variables.pri ) | 5 | include( ../variables.pri ) |
6 | 6 | ||
7 | INCLUDEPATH += ../microkde versit ../microkde/kdecore | 7 | INCLUDEPATH += ../libkdepim ../microkde versit ../microkde/kdecore |
8 | #../qtcompat | 8 | #../qtcompat |
9 | INCLUDEPATH += ../libical/src/libical | 9 | INCLUDEPATH += ../libical/src/libical |
10 | INCLUDEPATH += ../libical/src/libicalss | 10 | INCLUDEPATH += ../libical/src/libicalss |
11 | DESTDIR = ../bin | 11 | DESTDIR = ../bin |
12 | DEFINES += DESKTOP_VERSION | 12 | DEFINES += DESKTOP_VERSION |
13 | unix: { | 13 | unix: { |
14 | LIBS += ../libical/lib/libical.a | 14 | LIBS += ../libical/lib/libical.a |
15 | LIBS += ../libical/lib/libicalss.a | 15 | LIBS += ../libical/lib/libicalss.a |
16 | OBJECTS_DIR = obj/unix | 16 | OBJECTS_DIR = obj/unix |
17 | MOC_DIR = moc/unix | 17 | MOC_DIR = moc/unix |
18 | } | 18 | } |
19 | win32: { | 19 | win32: { |
20 | DEFINES += _WIN32_ | 20 | DEFINES += _WIN32_ |
21 | 21 | ||
22 | LIBS += ../libical/lib/ical.lib | 22 | LIBS += ../libical/lib/ical.lib |
23 | LIBS += ../libical/lib/icalss.lib | 23 | LIBS += ../libical/lib/icalss.lib |
24 | OBJECTS_DIR = obj/win | 24 | OBJECTS_DIR = obj/win |
25 | MOC_DIR = moc/win | 25 | MOC_DIR = moc/win |
26 | 26 | ||
27 | } | 27 | } |
28 | 28 | ||
29 | INTERFACES = \ | 29 | INTERFACES = \ |
30 | 30 | ||
31 | HEADERS = \ | 31 | HEADERS = \ |
32 | alarm.h \ | 32 | alarm.h \ |
33 | attachment.h \ | 33 | attachment.h \ |
34 | attendee.h \ | 34 | attendee.h \ |
35 | calendar.h \ | 35 | calendar.h \ |
36 | calendarlocal.h \ | 36 | calendarlocal.h \ |
37 | calfilter.h \ | 37 | calfilter.h \ |
38 | calformat.h \ | 38 | calformat.h \ |
39 | calstorage.h \ | 39 | calstorage.h \ |
40 | compat.h \ | 40 | compat.h \ |
41 | customproperties.h \ | 41 | customproperties.h \ |
42 | dummyscheduler.h \ | 42 | dummyscheduler.h \ |
43 | kincidenceformatter.h \ | 43 | kincidenceformatter.h \ |
44 | duration.h \ | 44 | duration.h \ |
45 | event.h \ | 45 | event.h \ |
46 | exceptions.h \ | 46 | exceptions.h \ |
47 | filestorage.h \ | 47 | filestorage.h \ |
48 | freebusy.h \ | 48 | freebusy.h \ |
49 | icaldrag.h \ | 49 | icaldrag.h \ |
50 | icalformat.h \ | 50 | icalformat.h \ |
51 | icalformatimpl.h \ | 51 | icalformatimpl.h \ |
52 | imipscheduler.h \ | 52 | imipscheduler.h \ |
53 | incidence.h \ | 53 | incidence.h \ |
54 | incidencebase.h \ | 54 | incidencebase.h \ |
55 | journal.h \ | 55 | journal.h \ |
56 | period.h \ | 56 | period.h \ |
57 | person.h \ | 57 | person.h \ |
58 | qtopiaformat.h \ | 58 | qtopiaformat.h \ |
59 | recurrence.h \ | 59 | recurrence.h \ |
60 | scheduler.h \ | 60 | scheduler.h \ |
61 | todo.h \ | 61 | todo.h \ |
62 | vcaldrag.h \ | 62 | vcaldrag.h \ |
63 | vcalformat.h \ | 63 | vcalformat.h \ |
64 | versit/port.h \ | 64 | versit/port.h \ |
65 | versit/vcc.h \ | 65 | versit/vcc.h \ |
66 | versit/vobject.h \ | 66 | versit/vobject.h \ |
67 | phoneformat.h \ | 67 | phoneformat.h \ |
68 | 68 | ||
69 | 69 | ||
70 | 70 | ||
71 | SOURCES = \ | 71 | SOURCES = \ |
72 | alarm.cpp \ | 72 | alarm.cpp \ |
73 | attachment.cpp \ | 73 | attachment.cpp \ |
74 | attendee.cpp \ | 74 | attendee.cpp \ |
75 | calendar.cpp \ | 75 | calendar.cpp \ |
76 | calendarlocal.cpp \ | 76 | calendarlocal.cpp \ |
77 | calfilter.cpp \ | 77 | calfilter.cpp \ |
78 | calformat.cpp \ | 78 | calformat.cpp \ |
79 | compat.cpp \ | 79 | compat.cpp \ |
80 | customproperties.cpp \ | 80 | customproperties.cpp \ |
81 | dummyscheduler.cpp \ | 81 | dummyscheduler.cpp \ |
82 | kincidenceformatter.cpp \ | 82 | kincidenceformatter.cpp \ |
83 | duration.cpp \ | 83 | duration.cpp \ |
84 | event.cpp \ | 84 | event.cpp \ |
85 | exceptions.cpp \ | 85 | exceptions.cpp \ |
86 | filestorage.cpp \ | 86 | filestorage.cpp \ |
87 | freebusy.cpp \ | 87 | freebusy.cpp \ |
88 | icaldrag.cpp \ | 88 | icaldrag.cpp \ |
89 | icalformat.cpp \ | 89 | icalformat.cpp \ |
90 | icalformatimpl.cpp \ | 90 | icalformatimpl.cpp \ |
91 | imipscheduler.cpp \ | 91 | imipscheduler.cpp \ |
92 | incidence.cpp \ | 92 | incidence.cpp \ |
93 | incidencebase.cpp \ | 93 | incidencebase.cpp \ |
94 | journal.cpp \ | 94 | journal.cpp \ |
95 | period.cpp \ | 95 | period.cpp \ |
96 | person.cpp \ | 96 | person.cpp \ |
97 | qtopiaformat.cpp \ | 97 | qtopiaformat.cpp \ |
98 | recurrence.cpp \ | 98 | recurrence.cpp \ |
99 | scheduler.cpp \ | 99 | scheduler.cpp \ |
100 | todo.cpp \ | 100 | todo.cpp \ |
101 | vcaldrag.cpp \ | 101 | vcaldrag.cpp \ |
102 | vcalformat.cpp \ | 102 | vcalformat.cpp \ |
103 | versit/vcc.c \ | 103 | versit/vcc.c \ |
104 | versit/vobject.c \ | 104 | versit/vobject.c \ |
105 | phoneformat.cpp \ | 105 | phoneformat.cpp \ |
106 | 106 | ||
diff --git a/libkcal/libkcalE.pro b/libkcal/libkcalE.pro index e379b95..e42dc9c 100644 --- a/libkcal/libkcalE.pro +++ b/libkcal/libkcalE.pro | |||
@@ -1,91 +1,91 @@ | |||
1 | TEMPLATE= lib | 1 | TEMPLATE= lib |
2 | CONFIG += qt warn_on | 2 | CONFIG += qt warn_on |
3 | TARGET = komicrokcal | 3 | TARGET = komicrokcal |
4 | 4 | ||
5 | INCLUDEPATH += ../microkde ../qtcompat versit ../microkde/kdecore $(QPEDIR)/include | 5 | INCLUDEPATH += ../libkdepim ../microkde ../qtcompat versit ../microkde/kdecore $(QPEDIR)/include |
6 | INCLUDEPATH += ../libical/src/libical | 6 | INCLUDEPATH += ../libical/src/libical |
7 | INCLUDEPATH += ../libical/src/libicalss | 7 | INCLUDEPATH += ../libical/src/libicalss |
8 | OBJECTS_DIR = obj/$(PLATFORM) | 8 | OBJECTS_DIR = obj/$(PLATFORM) |
9 | MOC_DIR = moc/$(PLATFORM) | 9 | MOC_DIR = moc/$(PLATFORM) |
10 | DESTDIR = $(QPEDIR)/lib | 10 | DESTDIR = $(QPEDIR)/lib |
11 | LIBS += ../libical/lib/$(PLATFORM)/libical.a | 11 | LIBS += ../libical/lib/$(PLATFORM)/libical.a |
12 | LIBS += ../libical/lib/$(PLATFORM)/libicalss.a | 12 | LIBS += ../libical/lib/$(PLATFORM)/libicalss.a |
13 | 13 | ||
14 | INTERFACES = \ | 14 | INTERFACES = \ |
15 | 15 | ||
16 | HEADERS = \ | 16 | HEADERS = \ |
17 | alarm.h \ | 17 | alarm.h \ |
18 | attachment.h \ | 18 | attachment.h \ |
19 | attendee.h \ | 19 | attendee.h \ |
20 | calendar.h \ | 20 | calendar.h \ |
21 | calendarlocal.h \ | 21 | calendarlocal.h \ |
22 | calfilter.h \ | 22 | calfilter.h \ |
23 | calformat.h \ | 23 | calformat.h \ |
24 | calstorage.h \ | 24 | calstorage.h \ |
25 | compat.h \ | 25 | compat.h \ |
26 | customproperties.h \ | 26 | customproperties.h \ |
27 | dummyscheduler.h \ | 27 | dummyscheduler.h \ |
28 | duration.h \ | 28 | duration.h \ |
29 | event.h \ | 29 | event.h \ |
30 | exceptions.h \ | 30 | exceptions.h \ |
31 | filestorage.h \ | 31 | filestorage.h \ |
32 | freebusy.h \ | 32 | freebusy.h \ |
33 | icaldrag.h \ | 33 | icaldrag.h \ |
34 | icalformat.h \ | 34 | icalformat.h \ |
35 | icalformatimpl.h \ | 35 | icalformatimpl.h \ |
36 | imipscheduler.h \ | 36 | imipscheduler.h \ |
37 | incidence.h \ | 37 | incidence.h \ |
38 | incidencebase.h \ | 38 | incidencebase.h \ |
39 | kincidenceformatter.h \ | 39 | kincidenceformatter.h \ |
40 | journal.h \ | 40 | journal.h \ |
41 | period.h \ | 41 | period.h \ |
42 | person.h \ | 42 | person.h \ |
43 | qtopiaformat.h \ | 43 | qtopiaformat.h \ |
44 | sharpformat.h \ | 44 | sharpformat.h \ |
45 | phoneformat.h \ | 45 | phoneformat.h \ |
46 | recurrence.h \ | 46 | recurrence.h \ |
47 | scheduler.h \ | 47 | scheduler.h \ |
48 | todo.h \ | 48 | todo.h \ |
49 | vcaldrag.h \ | 49 | vcaldrag.h \ |
50 | vcalformat.h \ | 50 | vcalformat.h \ |
51 | versit/port.h \ | 51 | versit/port.h \ |
52 | versit/vcc.h \ | 52 | versit/vcc.h \ |
53 | versit/vobject.h \ | 53 | versit/vobject.h \ |
54 | 54 | ||
55 | SOURCES = \ | 55 | SOURCES = \ |
56 | alarm.cpp \ | 56 | alarm.cpp \ |
57 | attachment.cpp \ | 57 | attachment.cpp \ |
58 | attendee.cpp \ | 58 | attendee.cpp \ |
59 | calendar.cpp \ | 59 | calendar.cpp \ |
60 | calendarlocal.cpp \ | 60 | calendarlocal.cpp \ |
61 | calfilter.cpp \ | 61 | calfilter.cpp \ |
62 | calformat.cpp \ | 62 | calformat.cpp \ |
63 | compat.cpp \ | 63 | compat.cpp \ |
64 | customproperties.cpp \ | 64 | customproperties.cpp \ |
65 | dummyscheduler.cpp \ | 65 | dummyscheduler.cpp \ |
66 | duration.cpp \ | 66 | duration.cpp \ |
67 | event.cpp \ | 67 | event.cpp \ |
68 | exceptions.cpp \ | 68 | exceptions.cpp \ |
69 | filestorage.cpp \ | 69 | filestorage.cpp \ |
70 | freebusy.cpp \ | 70 | freebusy.cpp \ |
71 | icaldrag.cpp \ | 71 | icaldrag.cpp \ |
72 | icalformat.cpp \ | 72 | icalformat.cpp \ |
73 | icalformatimpl.cpp \ | 73 | icalformatimpl.cpp \ |
74 | imipscheduler.cpp \ | 74 | imipscheduler.cpp \ |
75 | incidence.cpp \ | 75 | incidence.cpp \ |
76 | incidencebase.cpp \ | 76 | incidencebase.cpp \ |
77 | kincidenceformatter.cpp \ | 77 | kincidenceformatter.cpp \ |
78 | journal.cpp \ | 78 | journal.cpp \ |
79 | period.cpp \ | 79 | period.cpp \ |
80 | person.cpp \ | 80 | person.cpp \ |
81 | qtopiaformat.cpp \ | 81 | qtopiaformat.cpp \ |
82 | sharpformat.cpp \ | 82 | sharpformat.cpp \ |
83 | phoneformat.cpp \ | 83 | phoneformat.cpp \ |
84 | recurrence.cpp \ | 84 | recurrence.cpp \ |
85 | scheduler.cpp \ | 85 | scheduler.cpp \ |
86 | todo.cpp \ | 86 | todo.cpp \ |
87 | vcaldrag.cpp \ | 87 | vcaldrag.cpp \ |
88 | vcalformat.cpp \ | 88 | vcalformat.cpp \ |
89 | versit/vcc.c \ | 89 | versit/vcc.c \ |
90 | versit/vobject.c \ | 90 | versit/vobject.c \ |
91 | 91 | ||
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index b2a62b1..c39413e 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp | |||
@@ -1,383 +1,286 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of libkcal. | 2 | This file is part of libkcal. |
3 | 3 | ||
4 | Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> | 4 | Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <qdatetime.h> | 22 | #include <qdatetime.h> |
23 | #include <qstring.h> | 23 | #include <qstring.h> |
24 | #include <qapplication.h> | 24 | #include <qapplication.h> |
25 | #include <qptrlist.h> | 25 | #include <qptrlist.h> |
26 | #include <qregexp.h> | 26 | #include <qregexp.h> |
27 | #include <qmessagebox.h> | 27 | #include <qmessagebox.h> |
28 | #include <qclipboard.h> | 28 | #include <qclipboard.h> |
29 | #include <qfile.h> | 29 | #include <qfile.h> |
30 | #include <qtextstream.h> | 30 | #include <qtextstream.h> |
31 | #include <qtextcodec.h> | 31 | #include <qtextcodec.h> |
32 | #include <qdir.h> | 32 | #include <qdir.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 | #include <kmessagebox.h> |
39 | #include <phoneaccess.h> | ||
39 | 40 | ||
40 | #include "calendar.h" | 41 | #include "calendar.h" |
41 | #include "alarm.h" | 42 | #include "alarm.h" |
42 | #include "recurrence.h" | 43 | #include "recurrence.h" |
43 | #include "calendarlocal.h" | 44 | #include "calendarlocal.h" |
44 | 45 | ||
45 | #include "phoneformat.h" | 46 | #include "phoneformat.h" |
46 | #include "syncdefines.h" | 47 | #include "syncdefines.h" |
47 | 48 | ||
48 | using namespace KCal; | 49 | using namespace KCal; |
49 | class PhoneParser : public QObject | 50 | class PhoneParser : public QObject |
50 | { | 51 | { |
51 | public: | 52 | public: |
52 | PhoneParser( ) { | 53 | PhoneParser( ) { |
53 | ; | 54 | ; |
54 | } | 55 | } |
55 | 56 | ||
56 | static QString dtToString( const QDateTime& dti, bool useTZ = false ) | 57 | static QString dtToString( const QDateTime& dti, bool useTZ = false ) |
57 | { | 58 | { |
58 | QString datestr; | 59 | QString datestr; |
59 | QString timestr; | 60 | QString timestr; |
60 | int offset = KGlobal::locale()->localTimeOffset( dti ); | 61 | int offset = KGlobal::locale()->localTimeOffset( dti ); |
61 | QDateTime dt; | 62 | QDateTime dt; |
62 | if (useTZ) | 63 | if (useTZ) |
63 | dt = dti.addSecs ( -(offset*60)); | 64 | dt = dti.addSecs ( -(offset*60)); |
64 | else | 65 | else |
65 | dt = dti; | 66 | dt = dti; |
66 | if(dt.date().isValid()){ | 67 | if(dt.date().isValid()){ |
67 | const QDate& date = dt.date(); | 68 | const QDate& date = dt.date(); |
68 | datestr.sprintf("%04d%02d%02d", | 69 | datestr.sprintf("%04d%02d%02d", |
69 | date.year(), date.month(), date.day()); | 70 | date.year(), date.month(), date.day()); |
70 | } | 71 | } |
71 | if(dt.time().isValid()){ | 72 | if(dt.time().isValid()){ |
72 | const QTime& time = dt.time(); | 73 | const QTime& time = dt.time(); |
73 | timestr.sprintf("T%02d%02d%02d", | 74 | timestr.sprintf("T%02d%02d%02d", |
74 | time.hour(), time.minute(), time.second()); | 75 | time.hour(), time.minute(), time.second()); |
75 | } | 76 | } |
76 | return datestr + timestr; | 77 | return datestr + timestr; |
77 | } | 78 | } |
78 | 79 | ||
79 | 80 | ||
80 | }; | 81 | }; |
81 | 82 | ||
82 | 83 | ||
83 | 84 | ||
84 | PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model ) | 85 | PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model ) |
85 | { | 86 | { |
86 | mProfileName = profileName; | 87 | mProfileName = profileName; |
87 | writeConfig( device, connection, model ); | 88 | PhoneAccess::writeConfig( device, connection, model ); |
88 | } | 89 | } |
89 | 90 | ||
90 | PhoneFormat::~PhoneFormat() | 91 | PhoneFormat::~PhoneFormat() |
91 | { | 92 | { |
92 | } | 93 | } |
93 | void PhoneFormat::writeConfig( QString device, QString connection, QString model ) | ||
94 | { | ||
95 | #ifdef _WIN32_ | ||
96 | QString fileName = qApp->applicationDirPath () +"\\gammurc"; | ||
97 | #else | ||
98 | QString fileName = QDir::homeDirPath() +"/.gammurc"; | ||
99 | #endif | ||
100 | //qDebug("save %d ", load ); | ||
101 | QString content; | ||
102 | bool write = false; | ||
103 | bool addPort = true, addConnection = true, addModel = true; | ||
104 | QFile file( fileName ); | ||
105 | if ( QFile::exists( fileName) ) { | ||
106 | if (!file.open( IO_ReadOnly ) ) { | ||
107 | qDebug("Error: cannot open %s ", fileName.latin1() ); | ||
108 | return; | ||
109 | } | ||
110 | QString line; | ||
111 | while ( file.readLine( line, 1024 ) > 0 ) { | ||
112 | //qDebug("*%s* ", line.latin1() ); | ||
113 | if ( line.left(7 ) == "[gammu]" ) { | ||
114 | ; | ||
115 | } else | ||
116 | if ( line.left(4 ) == "port" ) { | ||
117 | if ( line == "port = " + device+"\n" ) { | ||
118 | content += line ; | ||
119 | addPort = false; | ||
120 | //qDebug("port found" ); | ||
121 | } | ||
122 | |||
123 | } else if ( line.left(5 ) == "model" ) { | ||
124 | if ( line == "model = " + model +"\n") { | ||
125 | content += line ; | ||
126 | addModel = false; | ||
127 | //qDebug("model found" ); | ||
128 | } | ||
129 | |||
130 | } else if ( line.left( 10 ) == "connection" ) { | ||
131 | if ( line == "connection = " + connection +"\n") { | ||
132 | addConnection = false; | ||
133 | content += line ; | ||
134 | //qDebug("con found" ); | ||
135 | } | ||
136 | |||
137 | } else { | ||
138 | content += line ; | ||
139 | } | ||
140 | } | ||
141 | file.close(); | ||
142 | } else { | ||
143 | if ( ! connection.isEmpty() ) { | ||
144 | addConnection = true; | ||
145 | } | ||
146 | if ( ! device.isEmpty() ) { | ||
147 | addPort = true; | ||
148 | 94 | ||
149 | } | ||
150 | if ( ! model.isEmpty() ) { | ||
151 | addModel = true; | ||
152 | } | ||
153 | } | ||
154 | |||
155 | if ( addConnection ) { | ||
156 | if ( ! write ) | ||
157 | content += "[gammu]\n"; | ||
158 | write = true; | ||
159 | content += "connection = "; | ||
160 | content += connection; | ||
161 | content += "\n"; | ||
162 | } | ||
163 | if ( addPort ) { | ||
164 | if ( ! write ) | ||
165 | content += "[gammu]\n"; | ||
166 | write = true; | ||
167 | content += "port = "; | ||
168 | content += device; | ||
169 | content += "\n"; | ||
170 | |||
171 | } | ||
172 | if ( addModel ) { | ||
173 | if ( ! write ) | ||
174 | content += "[gammu]\n"; | ||
175 | write = true; | ||
176 | content += "model = "; | ||
177 | content += model; | ||
178 | content += "\n"; | ||
179 | } | ||
180 | if ( write ) { | ||
181 | if (!file.open( IO_WriteOnly ) ) { | ||
182 | qDebug("Error: cannot write file %s ", fileName.latin1() ); | ||
183 | return; | ||
184 | } | ||
185 | qDebug("Writing file %s ", fileName.latin1() ); | ||
186 | QTextStream ts( &file ); | ||
187 | ts << content ; | ||
188 | file.close(); | ||
189 | } | ||
190 | |||
191 | } | ||
192 | #if 0 | 95 | #if 0 |
193 | int PhoneFormat::initDevice(GSM_StateMachine *s) | 96 | int PhoneFormat::initDevice(GSM_StateMachine *s) |
194 | { | 97 | { |
195 | GSM_ReadConfig(NULL, &s->Config[0], 0); | 98 | GSM_ReadConfig(NULL, &s->Config[0], 0); |
196 | s->ConfigNum = 1; | 99 | s->ConfigNum = 1; |
197 | GSM_Config *cfg = &s->Config[0]; | 100 | GSM_Config *cfg = &s->Config[0]; |
198 | if ( ! mConnection.isEmpty() ) { | 101 | if ( ! mConnection.isEmpty() ) { |
199 | cfg->Connection = strdup(mConnection.latin1()); | 102 | cfg->Connection = strdup(mConnection.latin1()); |
200 | cfg->DefaultConnection = false; | 103 | cfg->DefaultConnection = false; |
201 | qDebug("Connection set %s ", cfg->Connection ); | 104 | qDebug("Connection set %s ", cfg->Connection ); |
202 | 105 | ||
203 | } | 106 | } |
204 | if ( ! mDevice.isEmpty() ) { | 107 | if ( ! mDevice.isEmpty() ) { |
205 | cfg->Device = strdup(mDevice.latin1()); | 108 | cfg->Device = strdup(mDevice.latin1()); |
206 | cfg->DefaultDevice = false; | 109 | cfg->DefaultDevice = false; |
207 | qDebug("Device set %s ", cfg->Device); | 110 | qDebug("Device set %s ", cfg->Device); |
208 | 111 | ||
209 | } | 112 | } |
210 | if ( ! mModel.isEmpty() ) { | 113 | if ( ! mModel.isEmpty() ) { |
211 | strcpy(cfg->Model,mModel.latin1() ); | 114 | strcpy(cfg->Model,mModel.latin1() ); |
212 | cfg->DefaultModel = false; | 115 | cfg->DefaultModel = false; |
213 | qDebug("Model set %s ",cfg->Model ); | 116 | qDebug("Model set %s ",cfg->Model ); |
214 | } | 117 | } |
215 | int error=GSM_InitConnection(s,3); | 118 | int error=GSM_InitConnection(s,3); |
216 | return error; | 119 | return error; |
217 | } | 120 | } |
218 | #endif | 121 | #endif |
219 | ulong PhoneFormat::getCsumTodo( Todo* todo ) | 122 | ulong PhoneFormat::getCsumTodo( Todo* todo ) |
220 | { | 123 | { |
221 | QStringList attList; | 124 | QStringList attList; |
222 | if ( todo->hasDueDate() ) | 125 | if ( todo->hasDueDate() ) |
223 | attList << PhoneParser::dtToString ( todo->dtDue() ); | 126 | attList << PhoneParser::dtToString ( todo->dtDue() ); |
224 | attList << todo->summary(); | 127 | attList << todo->summary(); |
225 | QString completedString = "no"; | 128 | QString completedString = "no"; |
226 | if ( todo->isCompleted() ) | 129 | if ( todo->isCompleted() ) |
227 | completedString = "yes"; | 130 | completedString = "yes"; |
228 | attList << completedString; | 131 | attList << completedString; |
229 | int prio = todo->priority(); | 132 | int prio = todo->priority(); |
230 | if( prio == 2 ) prio = 1; | 133 | if( prio == 2 ) prio = 1; |
231 | if (prio == 4 ) prio = 5 ; | 134 | if (prio == 4 ) prio = 5 ; |
232 | attList << QString::number( prio ); | 135 | attList << QString::number( prio ); |
233 | QString alarmString = "na"; | 136 | QString alarmString = "na"; |
234 | Alarm *alarm; | 137 | Alarm *alarm; |
235 | if ( todo->alarms().count() > 0 ) { | 138 | if ( todo->alarms().count() > 0 ) { |
236 | alarm = todo->alarms().first(); | 139 | alarm = todo->alarms().first(); |
237 | if ( alarm->enabled() ) { | 140 | if ( alarm->enabled() ) { |
238 | alarmString = QString::number(alarm->offset() ); | 141 | alarmString = QString::number(alarm->offset() ); |
239 | } | 142 | } |
240 | } | 143 | } |
241 | attList << alarmString; | 144 | attList << alarmString; |
242 | attList << todo->categoriesStr(); | 145 | attList << todo->categoriesStr(); |
243 | attList << todo->secrecyStr(); | 146 | attList << todo->secrecyStr(); |
244 | return PhoneFormat::getCsum(attList ); | 147 | return PhoneFormat::getCsum(attList ); |
245 | 148 | ||
246 | } | 149 | } |
247 | ulong PhoneFormat::getCsumEvent( Event* event ) | 150 | ulong PhoneFormat::getCsumEvent( Event* event ) |
248 | { | 151 | { |
249 | QStringList attList; | 152 | QStringList attList; |
250 | attList << PhoneParser::dtToString ( event->dtStart() ); | 153 | attList << PhoneParser::dtToString ( event->dtStart() ); |
251 | attList << PhoneParser::dtToString ( event->dtEnd() ); | 154 | attList << PhoneParser::dtToString ( event->dtEnd() ); |
252 | attList << event->summary(); | 155 | attList << event->summary(); |
253 | attList << event->location(); | 156 | attList << event->location(); |
254 | QString alarmString = "na"; | 157 | QString alarmString = "na"; |
255 | Alarm *alarm; | 158 | Alarm *alarm; |
256 | if ( event->alarms().count() > 0 ) { | 159 | if ( event->alarms().count() > 0 ) { |
257 | alarm = event->alarms().first(); | 160 | alarm = event->alarms().first(); |
258 | if ( alarm->enabled() ) { | 161 | if ( alarm->enabled() ) { |
259 | alarmString = QString::number( alarm->offset() ); | 162 | alarmString = QString::number( alarm->offset() ); |
260 | } | 163 | } |
261 | } | 164 | } |
262 | attList << alarmString; | 165 | attList << alarmString; |
263 | Recurrence* rec = event->recurrence(); | 166 | Recurrence* rec = event->recurrence(); |
264 | QStringList list; | 167 | QStringList list; |
265 | bool writeEndDate = false; | 168 | bool writeEndDate = false; |
266 | switch ( rec->doesRecur() ) | 169 | switch ( rec->doesRecur() ) |
267 | { | 170 | { |
268 | case Recurrence::rDaily: // 0 | 171 | case Recurrence::rDaily: // 0 |
269 | list.append( "0" ); | 172 | list.append( "0" ); |
270 | list.append( QString::number( rec->frequency() ));//12 | 173 | list.append( QString::number( rec->frequency() ));//12 |
271 | list.append( "0" ); | 174 | list.append( "0" ); |
272 | list.append( "0" ); | 175 | list.append( "0" ); |
273 | writeEndDate = true; | 176 | writeEndDate = true; |
274 | break; | 177 | break; |
275 | case Recurrence::rWeekly:// 1 | 178 | case Recurrence::rWeekly:// 1 |
276 | list.append( "1" ); | 179 | list.append( "1" ); |
277 | list.append( QString::number( rec->frequency()) );//12 | 180 | list.append( QString::number( rec->frequency()) );//12 |
278 | list.append( "0" ); | 181 | list.append( "0" ); |
279 | { | 182 | { |
280 | int days = 0; | 183 | int days = 0; |
281 | QBitArray weekDays = rec->days(); | 184 | QBitArray weekDays = rec->days(); |
282 | int i; | 185 | int i; |
283 | for( i = 1; i <= 7; ++i ) { | 186 | for( i = 1; i <= 7; ++i ) { |
284 | if ( weekDays[i-1] ) { | 187 | if ( weekDays[i-1] ) { |
285 | days += 1 << (i-1); | 188 | days += 1 << (i-1); |
286 | } | 189 | } |
287 | } | 190 | } |
288 | list.append( QString::number( days ) ); | 191 | list.append( QString::number( days ) ); |
289 | } | 192 | } |
290 | //pending weekdays | 193 | //pending weekdays |
291 | writeEndDate = true; | 194 | writeEndDate = true; |
292 | 195 | ||
293 | break; | 196 | break; |
294 | case Recurrence::rMonthlyPos:// 2 | 197 | case Recurrence::rMonthlyPos:// 2 |
295 | list.append( "2" ); | 198 | list.append( "2" ); |
296 | list.append( QString::number( rec->frequency()) );//12 | 199 | list.append( QString::number( rec->frequency()) );//12 |
297 | 200 | ||
298 | writeEndDate = true; | 201 | writeEndDate = true; |
299 | { | 202 | { |
300 | int count = 1; | 203 | int count = 1; |
301 | QPtrList<Recurrence::rMonthPos> rmp; | 204 | QPtrList<Recurrence::rMonthPos> rmp; |
302 | rmp = rec->monthPositions(); | 205 | rmp = rec->monthPositions(); |
303 | if ( rmp.first()->negative ) | 206 | if ( rmp.first()->negative ) |
304 | count = 5 - rmp.first()->rPos - 1; | 207 | count = 5 - rmp.first()->rPos - 1; |
305 | else | 208 | else |
306 | count = rmp.first()->rPos - 1; | 209 | count = rmp.first()->rPos - 1; |
307 | list.append( QString::number( count ) ); | 210 | list.append( QString::number( count ) ); |
308 | 211 | ||
309 | } | 212 | } |
310 | 213 | ||
311 | list.append( "0" ); | 214 | list.append( "0" ); |
312 | break; | 215 | break; |
313 | case Recurrence::rMonthlyDay:// 3 | 216 | case Recurrence::rMonthlyDay:// 3 |
314 | list.append( "3" ); | 217 | list.append( "3" ); |
315 | list.append( QString::number( rec->frequency()) );//12 | 218 | list.append( QString::number( rec->frequency()) );//12 |
316 | list.append( "0" ); | 219 | list.append( "0" ); |
317 | list.append( "0" ); | 220 | list.append( "0" ); |
318 | writeEndDate = true; | 221 | writeEndDate = true; |
319 | break; | 222 | break; |
320 | case Recurrence::rYearlyMonth://4 | 223 | case Recurrence::rYearlyMonth://4 |
321 | list.append( "4" ); | 224 | list.append( "4" ); |
322 | list.append( QString::number( rec->frequency()) );//12 | 225 | list.append( QString::number( rec->frequency()) );//12 |
323 | list.append( "0" ); | 226 | list.append( "0" ); |
324 | list.append( "0" ); | 227 | list.append( "0" ); |
325 | writeEndDate = true; | 228 | writeEndDate = true; |
326 | break; | 229 | break; |
327 | 230 | ||
328 | default: | 231 | default: |
329 | list.append( "255" ); | 232 | list.append( "255" ); |
330 | list.append( QString() ); | 233 | list.append( QString() ); |
331 | list.append( "0" ); | 234 | list.append( "0" ); |
332 | list.append( QString() ); | 235 | list.append( QString() ); |
333 | list.append( "0" ); | 236 | list.append( "0" ); |
334 | list.append( "20991231T000000" ); | 237 | list.append( "20991231T000000" ); |
335 | break; | 238 | break; |
336 | } | 239 | } |
337 | if ( writeEndDate ) { | 240 | if ( writeEndDate ) { |
338 | 241 | ||
339 | if ( rec->endDate().isValid() ) { // 15 + 16 | 242 | if ( rec->endDate().isValid() ) { // 15 + 16 |
340 | list.append( "1" ); | 243 | list.append( "1" ); |
341 | list.append( PhoneParser::dtToString( rec->endDate()) ); | 244 | list.append( PhoneParser::dtToString( rec->endDate()) ); |
342 | } else { | 245 | } else { |
343 | list.append( "0" ); | 246 | list.append( "0" ); |
344 | list.append( "20991231T000000" ); | 247 | list.append( "20991231T000000" ); |
345 | } | 248 | } |
346 | 249 | ||
347 | } | 250 | } |
348 | attList << list.join(""); | 251 | attList << list.join(""); |
349 | attList << event->categoriesStr(); | 252 | attList << event->categoriesStr(); |
350 | //qDebug("csum cat %s", event->categoriesStr().latin1()); | 253 | //qDebug("csum cat %s", event->categoriesStr().latin1()); |
351 | 254 | ||
352 | attList << event->secrecyStr(); | 255 | attList << event->secrecyStr(); |
353 | return PhoneFormat::getCsum(attList ); | 256 | return PhoneFormat::getCsum(attList ); |
354 | } | 257 | } |
355 | ulong PhoneFormat::getCsum( const QStringList & attList) | 258 | ulong PhoneFormat::getCsum( const QStringList & attList) |
356 | { | 259 | { |
357 | int max = attList.count(); | 260 | int max = attList.count(); |
358 | ulong cSum = 0; | 261 | ulong cSum = 0; |
359 | int j,k,i; | 262 | int j,k,i; |
360 | int add; | 263 | int add; |
361 | for ( i = 0; i < max ; ++i ) { | 264 | for ( i = 0; i < max ; ++i ) { |
362 | QString s = attList[i]; | 265 | QString s = attList[i]; |
363 | if ( ! s.isEmpty() ){ | 266 | if ( ! s.isEmpty() ){ |
364 | j = s.length(); | 267 | j = s.length(); |
365 | for ( k = 0; k < j; ++k ) { | 268 | for ( k = 0; k < j; ++k ) { |
366 | int mul = k +1; | 269 | int mul = k +1; |
367 | add = s[k].unicode (); | 270 | add = s[k].unicode (); |
368 | if ( k < 16 ) | 271 | if ( k < 16 ) |
369 | mul = mul * mul; | 272 | mul = mul * mul; |
370 | int ii = i+1; | 273 | int ii = i+1; |
371 | add = add * mul *ii*ii*ii; | 274 | add = add * mul *ii*ii*ii; |
372 | cSum += add; | 275 | cSum += add; |
373 | } | 276 | } |
374 | } | 277 | } |
375 | 278 | ||
376 | } | 279 | } |
377 | //QString dump = attList.join(","); | 280 | //QString dump = attList.join(","); |
378 | //qDebug("csum: %d %s", cSum,dump.latin1()); | 281 | //qDebug("csum: %d %s", cSum,dump.latin1()); |
379 | 282 | ||
380 | return cSum; | 283 | return cSum; |
381 | 284 | ||
382 | } | 285 | } |
383 | //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); | 286 | //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); |
@@ -401,348 +304,334 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) | |||
401 | if ( ret != 0 ) { | 304 | if ( ret != 0 ) { |
402 | qDebug("Error::command returned %d", ret); | 305 | qDebug("Error::command returned %d", ret); |
403 | return false; | 306 | return false; |
404 | } | 307 | } |
405 | VCalFormat vfload; | 308 | VCalFormat vfload; |
406 | vfload.setLocalTime ( true ); | 309 | vfload.setLocalTime ( true ); |
407 | qDebug("loading file ..."); | 310 | qDebug("loading file ..."); |
408 | 311 | ||
409 | if ( ! vfload.load( calendar, fileName ) ) | 312 | if ( ! vfload.load( calendar, fileName ) ) |
410 | return false; | 313 | return false; |
411 | QPtrList<Event> er = calendar->rawEvents(); | 314 | QPtrList<Event> er = calendar->rawEvents(); |
412 | Event* ev = er.first(); | 315 | Event* ev = er.first(); |
413 | qDebug("reading events... "); | 316 | qDebug("reading events... "); |
414 | while ( ev ) { | 317 | while ( ev ) { |
415 | QStringList cat = ev->categories(); | 318 | QStringList cat = ev->categories(); |
416 | if ( cat.contains( "MeetingDEF" )) { | 319 | if ( cat.contains( "MeetingDEF" )) { |
417 | ev->setCategories( QStringList() ); | 320 | ev->setCategories( QStringList() ); |
418 | } | 321 | } |
419 | int id = ev->pilotId(); | 322 | int id = ev->pilotId(); |
420 | Event *event; | 323 | Event *event; |
421 | event = existingCal->event( mProfileName ,QString::number( id ) ); | 324 | event = existingCal->event( mProfileName ,QString::number( id ) ); |
422 | if ( event ) { | 325 | if ( event ) { |
423 | event = (Event*)event->clone(); | 326 | event = (Event*)event->clone(); |
424 | copyEvent( event, ev ); | 327 | copyEvent( event, ev ); |
425 | calendar->deleteEvent( ev ); | 328 | calendar->deleteEvent( ev ); |
426 | calendar->addEvent( event); | 329 | calendar->addEvent( event); |
427 | } | 330 | } |
428 | else | 331 | else |
429 | event = ev; | 332 | event = ev; |
430 | uint cSum; | 333 | uint cSum; |
431 | cSum = PhoneFormat::getCsumEvent( event ); | 334 | cSum = PhoneFormat::getCsumEvent( event ); |
432 | event->setCsum( mProfileName, QString::number( cSum )); | 335 | event->setCsum( mProfileName, QString::number( cSum )); |
433 | event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); | 336 | event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); |
434 | event->setID( mProfileName,QString::number( id ) ); | 337 | event->setID( mProfileName,QString::number( id ) ); |
435 | ev = er.next(); | 338 | ev = er.next(); |
436 | } | 339 | } |
437 | { | 340 | { |
438 | qDebug("reading todos... "); | 341 | qDebug("reading todos... "); |
439 | QPtrList<Todo> tr = calendar->rawTodos(); | 342 | QPtrList<Todo> tr = calendar->rawTodos(); |
440 | Todo* ev = tr.first(); | 343 | Todo* ev = tr.first(); |
441 | while ( ev ) { | 344 | while ( ev ) { |
442 | 345 | ||
443 | QStringList cat = ev->categories(); | 346 | QStringList cat = ev->categories(); |
444 | if ( cat.contains( "MeetingDEF" )) { | 347 | if ( cat.contains( "MeetingDEF" )) { |
445 | ev->setCategories( QStringList() ); | 348 | ev->setCategories( QStringList() ); |
446 | } | 349 | } |
447 | int id = ev->pilotId(); | 350 | int id = ev->pilotId(); |
448 | Todo *event; | 351 | Todo *event; |
449 | event = existingCal->todo( mProfileName ,QString::number( id ) ); | 352 | event = existingCal->todo( mProfileName ,QString::number( id ) ); |
450 | if ( event ) { | 353 | if ( event ) { |
451 | //qDebug("copy todo %s ", event->summary().latin1()); | 354 | //qDebug("copy todo %s ", event->summary().latin1()); |
452 | 355 | ||
453 | event = (Todo*)event->clone(); | 356 | event = (Todo*)event->clone(); |
454 | copyTodo( event, ev ); | 357 | copyTodo( event, ev ); |
455 | calendar->deleteTodo( ev ); | 358 | calendar->deleteTodo( ev ); |
456 | calendar->addTodo( event); | 359 | calendar->addTodo( event); |
457 | } | 360 | } |
458 | else | 361 | else |
459 | event = ev; | 362 | event = ev; |
460 | uint cSum; | 363 | uint cSum; |
461 | cSum = PhoneFormat::getCsumTodo( event ); | 364 | cSum = PhoneFormat::getCsumTodo( event ); |
462 | event->setCsum( mProfileName, QString::number( cSum )); | 365 | event->setCsum( mProfileName, QString::number( cSum )); |
463 | event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); | 366 | event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); |
464 | event->setID( mProfileName,QString::number( id ) ); | 367 | event->setID( mProfileName,QString::number( id ) ); |
465 | ev = tr.next(); | 368 | ev = tr.next(); |
466 | } | 369 | } |
467 | } | 370 | } |
468 | return true; | 371 | return true; |
469 | } | 372 | } |
470 | void PhoneFormat::copyEvent( Event* to, Event* from ) | 373 | void PhoneFormat::copyEvent( Event* to, Event* from ) |
471 | { | 374 | { |
472 | if ( from->dtStart().isValid() ) | 375 | if ( from->dtStart().isValid() ) |
473 | to->setDtStart( from->dtStart() ); | 376 | to->setDtStart( from->dtStart() ); |
474 | if ( from->dtEnd().isValid() ) | 377 | if ( from->dtEnd().isValid() ) |
475 | to->setDtEnd( from->dtEnd() ); | 378 | to->setDtEnd( from->dtEnd() ); |
476 | if ( !from->location().isEmpty() ) | 379 | if ( !from->location().isEmpty() ) |
477 | to->setLocation( from->location() ); | 380 | to->setLocation( from->location() ); |
478 | if ( !from->description().isEmpty() ) | 381 | if ( !from->description().isEmpty() ) |
479 | to->setDescription( from->description() ); | 382 | to->setDescription( from->description() ); |
480 | if ( !from->summary().isEmpty() ) | 383 | if ( !from->summary().isEmpty() ) |
481 | to->setSummary( from->summary() ); | 384 | to->setSummary( from->summary() ); |
482 | 385 | ||
483 | if ( from->alarms().count() ) { | 386 | if ( from->alarms().count() ) { |
484 | to->clearAlarms(); | 387 | to->clearAlarms(); |
485 | Alarm *a = from->alarms().first(); | 388 | Alarm *a = from->alarms().first(); |
486 | Alarm *b = to->newAlarm( ); | 389 | Alarm *b = to->newAlarm( ); |
487 | b->setEnabled( a->enabled() ); | 390 | b->setEnabled( a->enabled() ); |
488 | if ( a->hasStartOffset() ) { | 391 | if ( a->hasStartOffset() ) { |
489 | b->setStartOffset( a->startOffset() ); | 392 | b->setStartOffset( a->startOffset() ); |
490 | } | 393 | } |
491 | if ( a->hasTime() ) | 394 | if ( a->hasTime() ) |
492 | b->setTime( a->time() ); | 395 | b->setTime( a->time() ); |
493 | 396 | ||
494 | } | 397 | } |
495 | QStringList cat = to->categories(); | 398 | QStringList cat = to->categories(); |
496 | QStringList catFrom = from->categories(); | 399 | QStringList catFrom = from->categories(); |
497 | QString nCat; | 400 | QString nCat; |
498 | int iii; | 401 | int iii; |
499 | for ( iii = 0; iii < catFrom.count();++iii ) { | 402 | for ( iii = 0; iii < catFrom.count();++iii ) { |
500 | nCat = catFrom[iii]; | 403 | nCat = catFrom[iii]; |
501 | if ( !nCat.isEmpty() ) | 404 | if ( !nCat.isEmpty() ) |
502 | if ( !cat.contains( nCat )) { | 405 | if ( !cat.contains( nCat )) { |
503 | cat << nCat; | 406 | cat << nCat; |
504 | } | 407 | } |
505 | } | 408 | } |
506 | to->setCategories( cat ); | 409 | to->setCategories( cat ); |
507 | Recurrence * r = new Recurrence( *from->recurrence(),to); | 410 | Recurrence * r = new Recurrence( *from->recurrence(),to); |
508 | to->setRecurrence( r ) ; | 411 | to->setRecurrence( r ) ; |
509 | 412 | ||
510 | 413 | ||
511 | } | 414 | } |
512 | void PhoneFormat::copyTodo( Todo* to, Todo* from ) | 415 | void PhoneFormat::copyTodo( Todo* to, Todo* from ) |
513 | { | 416 | { |
514 | if ( from->dtStart().isValid() ) | 417 | if ( from->dtStart().isValid() ) |
515 | to->setDtStart( from->dtStart() ); | 418 | to->setDtStart( from->dtStart() ); |
516 | if ( from->dtDue().isValid() ) | 419 | if ( from->dtDue().isValid() ) |
517 | to->setDtDue( from->dtDue() ); | 420 | to->setDtDue( from->dtDue() ); |
518 | if ( !from->location().isEmpty() ) | 421 | if ( !from->location().isEmpty() ) |
519 | to->setLocation( from->location() ); | 422 | to->setLocation( from->location() ); |
520 | if ( !from->description().isEmpty() ) | 423 | if ( !from->description().isEmpty() ) |
521 | to->setDescription( from->description() ); | 424 | to->setDescription( from->description() ); |
522 | if ( !from->summary().isEmpty() ) | 425 | if ( !from->summary().isEmpty() ) |
523 | to->setSummary( from->summary() ); | 426 | to->setSummary( from->summary() ); |
524 | 427 | ||
525 | if ( from->alarms().count() ) { | 428 | if ( from->alarms().count() ) { |
526 | to->clearAlarms(); | 429 | to->clearAlarms(); |
527 | Alarm *a = from->alarms().first(); | 430 | Alarm *a = from->alarms().first(); |
528 | Alarm *b = to->newAlarm( ); | 431 | Alarm *b = to->newAlarm( ); |
529 | b->setEnabled( a->enabled() ); | 432 | b->setEnabled( a->enabled() ); |
530 | if ( a->hasStartOffset() ) | 433 | if ( a->hasStartOffset() ) |
531 | b->setStartOffset( a->startOffset() ); | 434 | b->setStartOffset( a->startOffset() ); |
532 | if ( a->hasTime() ) | 435 | if ( a->hasTime() ) |
533 | b->setTime( a->time() ); | 436 | b->setTime( a->time() ); |
534 | } | 437 | } |
535 | 438 | ||
536 | QStringList cat = to->categories(); | 439 | QStringList cat = to->categories(); |
537 | QStringList catFrom = from->categories(); | 440 | QStringList catFrom = from->categories(); |
538 | QString nCat; | 441 | QString nCat; |
539 | int iii; | 442 | int iii; |
540 | for ( iii = 0; iii < catFrom.count();++iii ) { | 443 | for ( iii = 0; iii < catFrom.count();++iii ) { |
541 | nCat = catFrom[iii]; | 444 | nCat = catFrom[iii]; |
542 | if ( !nCat.isEmpty() ) | 445 | if ( !nCat.isEmpty() ) |
543 | if ( !cat.contains( nCat )) { | 446 | if ( !cat.contains( nCat )) { |
544 | cat << nCat; | 447 | cat << nCat; |
545 | } | 448 | } |
546 | } | 449 | } |
547 | to->setCategories( cat ); | 450 | to->setCategories( cat ); |
548 | if ( from->isCompleted() ) { | 451 | if ( from->isCompleted() ) { |
549 | to->setCompleted( true ); | 452 | to->setCompleted( true ); |
550 | if( from->completed().isValid() ) | 453 | if( from->completed().isValid() ) |
551 | to->setCompleted( from->completed() ); | 454 | to->setCompleted( from->completed() ); |
552 | } else { | 455 | } else { |
553 | // set percentcomplete only, if to->isCompleted() | 456 | // set percentcomplete only, if to->isCompleted() |
554 | if ( to->isCompleted() ) | 457 | if ( to->isCompleted() ) |
555 | to->setPercentComplete(from->percentComplete()); | 458 | to->setPercentComplete(from->percentComplete()); |
556 | } | 459 | } |
557 | if( to->priority() == 2 && from->priority() == 1 ) | 460 | if( to->priority() == 2 && from->priority() == 1 ) |
558 | ; //skip | 461 | ; //skip |
559 | else if (to->priority() == 4 && from->priority() == 5 ) | 462 | else if (to->priority() == 4 && from->priority() == 5 ) |
560 | ; | 463 | ; |
561 | else | 464 | else |
562 | to->setPriority(from->priority()); | 465 | to->setPriority(from->priority()); |
563 | 466 | ||
564 | } | 467 | } |
565 | #include <qcstring.h> | 468 | #include <qcstring.h> |
566 | 469 | ||
567 | void PhoneFormat::afterSave( Incidence* inc) | 470 | void PhoneFormat::afterSave( Incidence* inc) |
568 | { | 471 | { |
569 | uint csum; | 472 | uint csum; |
570 | inc->removeID( mProfileName ); | 473 | inc->removeID( mProfileName ); |
571 | if ( inc->type() == "Event") | 474 | if ( inc->type() == "Event") |
572 | csum = PhoneFormat::getCsumEvent( (Event*) inc ); | 475 | csum = PhoneFormat::getCsumEvent( (Event*) inc ); |
573 | else | 476 | else |
574 | csum = PhoneFormat::getCsumTodo( (Todo*) inc ); | 477 | csum = PhoneFormat::getCsumTodo( (Todo*) inc ); |
575 | inc->setCsum( mProfileName, QString::number( csum )); | 478 | inc->setCsum( mProfileName, QString::number( csum )); |
576 | 479 | ||
577 | inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); | 480 | inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); |
578 | 481 | ||
579 | } | 482 | } |
580 | 483 | ||
581 | bool PhoneFormat::writeToPhone( Calendar * calendar) | 484 | bool PhoneFormat::writeToPhone( Calendar * calendar) |
582 | { | 485 | { |
583 | #ifdef _WIN32_ | 486 | #ifdef _WIN32_ |
584 | QString fileName = locateLocal("tmp", "tempfile.vcs"); | 487 | QString fileName = locateLocal("tmp", "tempfile.vcs"); |
585 | #else | 488 | #else |
586 | QString fileName = "/tmp/kdepimtemp.vcs"; | 489 | QString fileName = "/tmp/kdepimtemp.vcs"; |
587 | #endif | 490 | #endif |
588 | 491 | ||
589 | VCalFormat vfsave; | 492 | VCalFormat vfsave; |
590 | vfsave.setLocalTime ( true ); | 493 | vfsave.setLocalTime ( true ); |
591 | if ( ! vfsave.save( calendar, fileName ) ) | 494 | if ( ! vfsave.save( calendar, fileName ) ) |
592 | return false; | 495 | return false; |
593 | // 4 call kammu | 496 | return PhoneAccess::writeToPhone( fileName ); |
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 | } | 497 | } |
609 | bool PhoneFormat::save( Calendar *calendar) | 498 | bool PhoneFormat::save( Calendar *calendar) |
610 | { | 499 | { |
611 | QLabel status ( i18n(" Opening device ..."), 0 ); | 500 | QLabel status ( i18n(" Opening device ..."), 0 ); |
612 | int w = status.sizeHint().width()+20 ; | 501 | int w = status.sizeHint().width()+20 ; |
613 | if ( w < 200 ) w = 230; | 502 | if ( w < 200 ) w = 230; |
614 | int h = status.sizeHint().height()+20 ; | 503 | int h = status.sizeHint().height()+20 ; |
615 | int dw = QApplication::desktop()->width(); | 504 | int dw = QApplication::desktop()->width(); |
616 | int dh = QApplication::desktop()->height(); | 505 | int dh = QApplication::desktop()->height(); |
617 | status.setCaption(i18n("Writing to phone...") ); | 506 | status.setCaption(i18n("Writing to phone...") ); |
618 | status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); | 507 | status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); |
619 | status.show(); | 508 | status.show(); |
620 | status.raise(); | 509 | status.raise(); |
621 | qApp->processEvents(); | 510 | qApp->processEvents(); |
622 | QString message; | 511 | QString message; |
623 | 512 | ||
624 | // 1 remove events which should be deleted | 513 | // 1 remove events which should be deleted |
625 | QPtrList<Event> er = calendar->rawEvents(); | 514 | QPtrList<Event> er = calendar->rawEvents(); |
626 | Event* ev = er.first(); | 515 | Event* ev = er.first(); |
627 | while ( ev ) { | 516 | while ( ev ) { |
628 | if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { | 517 | if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { |
629 | calendar->deleteEvent( ev ); | 518 | calendar->deleteEvent( ev ); |
630 | } else { | 519 | } else { |
631 | 520 | ||
632 | } | 521 | } |
633 | ev = er.next(); | 522 | ev = er.next(); |
634 | } | 523 | } |
635 | // 2 remove todos which should be deleted | 524 | // 2 remove todos which should be deleted |
636 | QPtrList<Todo> tl = calendar->rawTodos(); | 525 | QPtrList<Todo> tl = calendar->rawTodos(); |
637 | Todo* to = tl.first(); | 526 | Todo* to = tl.first(); |
638 | while ( to ) { | 527 | while ( to ) { |
639 | if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { | 528 | if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { |
640 | calendar->deleteTodo( to ); | 529 | calendar->deleteTodo( to ); |
641 | } else { | 530 | } else { |
642 | if ( to->isCompleted()) { | 531 | if ( to->isCompleted()) { |
643 | calendar->deleteTodo( to ); | 532 | calendar->deleteTodo( to ); |
644 | } | 533 | } |
645 | } | 534 | } |
646 | to = tl.next(); | 535 | to = tl.next(); |
647 | } | 536 | } |
648 | // 3 save file | 537 | // 3 save file |
649 | if ( !writeToPhone( calendar ) ) | 538 | if ( !writeToPhone( calendar ) ) |
650 | return false; | 539 | return false; |
651 | 540 | ||
652 | // 5 reread data | 541 | // 5 reread data |
653 | message = i18n(" Rereading all data ... "); | 542 | message = i18n(" Rereading all data ... "); |
654 | status.setText ( message ); | 543 | status.setText ( message ); |
655 | qApp->processEvents(); | 544 | qApp->processEvents(); |
656 | CalendarLocal* calendarTemp = new CalendarLocal(); | 545 | CalendarLocal* calendarTemp = new CalendarLocal(); |
657 | calendarTemp->setTimeZoneId( calendar->timeZoneId()); | 546 | calendarTemp->setTimeZoneId( calendar->timeZoneId()); |
658 | if ( ! load( calendarTemp,calendar) ){ | 547 | if ( ! load( calendarTemp,calendar) ){ |
659 | qDebug("error reloading calendar "); | 548 | qDebug("error reloading calendar "); |
660 | delete calendarTemp; | 549 | delete calendarTemp; |
661 | return false; | 550 | return false; |
662 | } | 551 | } |
663 | // 6 compare data | 552 | // 6 compare data |
664 | 553 | ||
665 | //algo 6 compare event | 554 | //algo 6 compare event |
666 | er = calendar->rawEvents(); | 555 | er = calendar->rawEvents(); |
667 | ev = er.first(); | 556 | ev = er.first(); |
668 | message = i18n(" Comparing event # "); | 557 | message = i18n(" Comparing event # "); |
669 | QPtrList<Event> er1 = calendarTemp->rawEvents(); | 558 | QPtrList<Event> er1 = calendarTemp->rawEvents(); |
670 | Event* ev1; | 559 | Event* ev1; |
671 | int procCount = 0; | 560 | int procCount = 0; |
672 | while ( ev ) { | 561 | while ( ev ) { |
673 | //qDebug("event new ID %s",ev->summary().latin1()); | 562 | //qDebug("event new ID %s",ev->summary().latin1()); |
674 | status.setText ( message + QString::number ( ++procCount ) ); | 563 | status.setText ( message + QString::number ( ++procCount ) ); |
675 | qApp->processEvents(); | 564 | qApp->processEvents(); |
676 | uint csum; | 565 | uint csum; |
677 | csum = PhoneFormat::getCsumEvent( ev ); | 566 | csum = PhoneFormat::getCsumEvent( ev ); |
678 | QString cSum = QString::number( csum ); | 567 | QString cSum = QString::number( csum ); |
679 | //ev->setCsum( mProfileName, cSum ); | 568 | //ev->setCsum( mProfileName, cSum ); |
680 | //qDebug("Event cSum %s ", cSum.latin1()); | 569 | //qDebug("Event cSum %s ", cSum.latin1()); |
681 | ev1 = er1.first(); | 570 | ev1 = er1.first(); |
682 | while ( ev1 ) { | 571 | while ( ev1 ) { |
683 | if ( ev1->getCsum( mProfileName ) == cSum ) { | 572 | if ( ev1->getCsum( mProfileName ) == cSum ) { |
684 | er1.remove( ev1 ); | 573 | er1.remove( ev1 ); |
685 | afterSave( ev ); | 574 | afterSave( ev ); |
686 | ev->setID(mProfileName, ev1->getID(mProfileName) ); | 575 | ev->setID(mProfileName, ev1->getID(mProfileName) ); |
687 | //qDebug("Event found on phone for %s ", ev->summary().latin1()); | 576 | //qDebug("Event found on phone for %s ", ev->summary().latin1()); |
688 | 577 | ||
689 | break; | 578 | break; |
690 | } | 579 | } |
691 | ev1 = er1.next(); | 580 | ev1 = er1.next(); |
692 | } | 581 | } |
693 | if ( ! ev1 ) { | 582 | if ( ! ev1 ) { |
694 | // ev->removeID(mProfileName); | 583 | // ev->removeID(mProfileName); |
695 | qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1()); | 584 | qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1()); |
696 | } | 585 | } |
697 | 586 | ||
698 | 587 | ||
699 | ev = er.next(); | 588 | ev = er.next(); |
700 | } | 589 | } |
701 | //algo 6 compare todo | 590 | //algo 6 compare todo |
702 | tl = calendar->rawTodos(); | 591 | tl = calendar->rawTodos(); |
703 | to = tl.first(); | 592 | to = tl.first(); |
704 | procCount = 0; | 593 | procCount = 0; |
705 | QPtrList<Todo> tl1 = calendarTemp->rawTodos(); | 594 | QPtrList<Todo> tl1 = calendarTemp->rawTodos(); |
706 | Todo* to1 ; | 595 | Todo* to1 ; |
707 | message = i18n(" Comparing todo # "); | 596 | message = i18n(" Comparing todo # "); |
708 | while ( to ) { | 597 | while ( to ) { |
709 | status.setText ( message + QString::number ( ++procCount ) ); | 598 | status.setText ( message + QString::number ( ++procCount ) ); |
710 | qApp->processEvents(); | 599 | qApp->processEvents(); |
711 | uint csum; | 600 | uint csum; |
712 | csum = PhoneFormat::getCsumTodo( to ); | 601 | csum = PhoneFormat::getCsumTodo( to ); |
713 | QString cSum = QString::number( csum ); | 602 | QString cSum = QString::number( csum ); |
714 | //to->setCsum( mProfileName, cSum ); | 603 | //to->setCsum( mProfileName, cSum ); |
715 | //qDebug("Todo cSum %s ", cSum.latin1()); | 604 | //qDebug("Todo cSum %s ", cSum.latin1()); |
716 | Todo* to1 = tl1.first(); | 605 | Todo* to1 = tl1.first(); |
717 | while ( to1 ) { | 606 | while ( to1 ) { |
718 | if ( to1->getCsum( mProfileName ) == cSum ) { | 607 | if ( to1->getCsum( mProfileName ) == cSum ) { |
719 | tl1.remove( to1 ); | 608 | tl1.remove( to1 ); |
720 | afterSave( to ); | 609 | afterSave( to ); |
721 | to->setID(mProfileName, to1->getID(mProfileName) ); | 610 | to->setID(mProfileName, to1->getID(mProfileName) ); |
722 | break; | 611 | break; |
723 | } | 612 | } |
724 | to1 = tl1.next(); | 613 | to1 = tl1.next(); |
725 | } | 614 | } |
726 | if ( ! to1 ) { | 615 | if ( ! to1 ) { |
727 | //to->removeID(mProfileName); | 616 | //to->removeID(mProfileName); |
728 | qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1()); | 617 | qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1()); |
729 | } | 618 | } |
730 | 619 | ||
731 | to = tl.next(); | 620 | to = tl.next(); |
732 | } | 621 | } |
733 | delete calendarTemp; | 622 | delete calendarTemp; |
734 | return true; | 623 | return true; |
735 | 624 | ||
736 | 625 | ||
737 | 626 | ||
738 | } | 627 | } |
739 | 628 | ||
740 | 629 | ||
741 | QString PhoneFormat::toString( Calendar * ) | 630 | QString PhoneFormat::toString( Calendar * ) |
742 | { | 631 | { |
743 | return QString::null; | 632 | return QString::null; |
744 | } | 633 | } |
745 | bool PhoneFormat::fromString( Calendar *calendar, const QString & text) | 634 | bool PhoneFormat::fromString( Calendar *calendar, const QString & text) |
746 | { | 635 | { |
747 | return false; | 636 | return false; |
748 | } | 637 | } |
diff --git a/libkcal/phoneformat.h b/libkcal/phoneformat.h index 61e8160..001fd81 100644 --- a/libkcal/phoneformat.h +++ b/libkcal/phoneformat.h | |||
@@ -1,63 +1,62 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of libkcal. | 2 | This file is part of libkcal. |
3 | 3 | ||
4 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | #ifndef PHONEFORMAT_H | 21 | #ifndef PHONEFORMAT_H |
22 | #define PHONEFORMAT_H | 22 | #define PHONEFORMAT_H |
23 | 23 | ||
24 | #include <qstring.h> | 24 | #include <qstring.h> |
25 | 25 | ||
26 | #include "scheduler.h" | 26 | #include "scheduler.h" |
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 | static bool writeToPhone( Calendar * ); |
53 | private: | 52 | private: |
54 | void copyEvent( Event* to, Event* from ); | 53 | void copyEvent( Event* to, Event* from ); |
55 | void copyTodo( Todo* to, Todo* from ); | 54 | void copyTodo( Todo* to, Todo* from ); |
56 | //int initDevice(GSM_StateMachine *s); | 55 | //int initDevice(GSM_StateMachine *s); |
57 | QString mProfileName; | 56 | QString mProfileName; |
58 | void afterSave( Incidence* ); | 57 | void afterSave( Incidence* ); |
59 | }; | 58 | }; |
60 | 59 | ||
61 | } | 60 | } |
62 | 61 | ||
63 | #endif | 62 | #endif |