summaryrefslogtreecommitdiffabout
path: root/libkdepim/externalapphandler.cpp
Unidiff
Diffstat (limited to 'libkdepim/externalapphandler.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/externalapphandler.cpp52
1 files changed, 35 insertions, 17 deletions
diff --git a/libkdepim/externalapphandler.cpp b/libkdepim/externalapphandler.cpp
index b57506b..bd83626 100644
--- a/libkdepim/externalapphandler.cpp
+++ b/libkdepim/externalapphandler.cpp
@@ -1,453 +1,471 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@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/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30#include <stdlib.h> 30#include <stdlib.h>
31 31
32#include <qfile.h> 32#include <qfile.h>
33#include <qmap.h> 33#include <qmap.h>
34#include <qregexp.h> 34#include <qregexp.h>
35 35
36#ifndef DESKTOP_VERSION 36#ifndef DESKTOP_VERSION
37#include <qpe/qpeapplication.h>
37#include <qtopia/qcopenvelope_qws.h> 38#include <qtopia/qcopenvelope_qws.h>
39#else
40#include <qapplication.h>
38#endif 41#endif
39 42
40#include <kstaticdeleter.h> 43#include <kstaticdeleter.h>
41#include <kmessagebox.h> 44#include <kmessagebox.h>
42 45
43 46
44#include "externalapphandler.h" 47#include "externalapphandler.h"
45 48
46#include "kpimglobalprefs.h" 49#include "kpimglobalprefs.h"
47 50
48/********************************************************************************* 51/*********************************************************************************
49 * 52 *
50 ********************************************************************************/ 53 ********************************************************************************/
51 54
52 55
53QCopTransferItem::QCopTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage) 56QCopTransferItem::QCopTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
54 : _usedSourceParameters(usedSourceParameters), _sourceMessage(sourceMessage), _targetChannel(targetChannel), _targetMessage(targetMessage) 57 : _usedSourceParameters(usedSourceParameters), _sourceMessage(sourceMessage), _targetChannel(targetChannel), _targetMessage(targetMessage)
55{ 58{
56 //sourceMessage passes later three parameters: sourceChannel, uid, param1 59 //sourceMessage passes later three parameters: sourceChannel, uid, param1
57 _sourceMessageParameters = "(QString,QString,QString)"; 60 if (_usedSourceParameters == 0)
61 _sourceMessageParameters = "(QString,QString)";
62 else if (_usedSourceParameters == 1)
63 _sourceMessageParameters = "(QString,QString,QString)";
64 else if (_usedSourceParameters == 2)
65 _sourceMessageParameters = "(QString,QString,QString,QString)";
66 else if (_usedSourceParameters == 3)
67 _sourceMessageParameters = "(QString,QString,QString,QString,QString)";
58} 68}
59 69
60/*********************************************************************************/ 70/*********************************************************************************/
61 71
62QCopTransferItem::QCopTransferItem() 72QCopTransferItem::QCopTransferItem()
63{ 73{
64} 74}
65 75
66/*********************************************************************************/ 76/*********************************************************************************/
67bool QCopTransferItem::sendMessageToTarget(const QString& uid, const QString& param1, const QString& param2, const QString& param3) 77bool QCopTransferItem::sendMessageToTarget(const QString& uid, const QString& param1, const QString& param2, const QString& param3)
68{ 78{
69 79
70#ifndef DESKTOP_VERSION 80#ifndef DESKTOP_VERSION
71 //sourceMessage passes two parameters: sourceChannel, uid 81 //sourceMessage passes two parameters: sourceChannel, uid
72 QString sourceMessage = _sourceMessage + _sourceMessageParameters; 82 QString sourceMessage = _sourceMessage + _sourceMessageParameters;
73 83
74 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _targetChannel.latin1(), sourceMessage.latin1()); 84 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _targetChannel.latin1(), sourceMessage.latin1());
75 qDebug("passing sourcechannel(%s), uid(%s), param1(%s), param3(%s), param3(%s) as parameter to QCopEnvelope", _sourceChannel.latin1(), uid.latin1(), param1.latin1(), param2.latin1(), param3.latin1()); 85 qDebug("passing sourcechannel(%s), uid(%s), param1(%s), param2(%s), param3(%s) as parameter to QCopEnvelope", _sourceChannel.latin1(), uid.latin1(), param1.latin1(), param2.latin1(), param3.latin1());
76 86
77 QCopEnvelope e(_targetChannel.latin1(), sourceMessage.latin1()); 87 QCopEnvelope e(_targetChannel.latin1(), sourceMessage.latin1());
78 88
79 e << _sourceChannel << uid; 89 e << _sourceChannel << uid;
80 90
81 if (_usedSourceParameters == 1) 91 if (_usedSourceParameters == 1)
82 e << param1; 92 e << param1;
83 else if (_usedSourceParameters == 2) 93 else if (_usedSourceParameters == 2)
84 e << param1 << param2; 94 e << param1 << param2;
85 else if (_usedSourceParameters == 3) 95 else if (_usedSourceParameters == 3)
86 e << param1 << param2 << param3; 96 e << param1 << param2 << param3;
87 97
98 qApp->processEvents();
88 99
89 return true; 100 return true;
90 101
91#else 102#else
92 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) ); 103 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
93 return false; 104 return false;
94#endif 105#endif
95 106
96} 107}
97 108
98 109
99/*********************************************************************************/ 110/*********************************************************************************/
100void QCopTransferItem::setSourceChannel(const QString& sourceChannel) 111void QCopTransferItem::setSourceChannel(const QString& sourceChannel)
101{ 112{
102 113
103 if (_sourceChannel.isEmpty()) 114 if (_sourceChannel.isEmpty())
104 _sourceChannel = sourceChannel; 115 _sourceChannel = sourceChannel;
105} 116}
106 117
107 118
108/*********************************************************************************/ 119/*********************************************************************************/
109bool QCopTransferItem::appMessage( const QCString& cmsg, const QByteArray& data ) 120bool QCopTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
110{ 121{
111/*US 122
112 // copied from old mail2 123 // copied from old mail2
124/*
113 static int ii = 0; 125 static int ii = 0;
114 126
115 // block second call 127 // block second call
116 if ( ii < 2 ) { 128 if ( ii < 2 ) {
117 ++ii; 129 ++ii;
118 if ( ii > 1 ) { 130 if ( ii > 1 ) {
119 qDebug("qcop call blocked "); 131 qDebug("qcop call blocked ");
120 return true; 132 return true;
133 }
121 } 134 }
122 }
123*/ 135*/
124 qDebug("QCopTransferItem- QCOP message received: %s ", cmsg.data() ); 136
137// qDebug("QCopTransferItem- QCOP message received: %s ", cmsg.data() );
125 138
126 //we are in the target and get a request from the source 139 //we are in the target and get a request from the source
127 if ( (_sourceMessage + _sourceMessageParameters) == cmsg.data()) 140 if ( (_sourceMessage + _sourceMessageParameters) == cmsg.data())
128 { 141 {
142
129 QDataStream stream( data, IO_ReadOnly ); 143 QDataStream stream( data, IO_ReadOnly );
130 144
131 145
132 QString sourceChannel; 146 QString sourceChannel;
133 QString uid; 147 QString uid;
134 QString param1; 148 QString param1;
135 QString param2; 149 QString param2;
136 QString param3; 150 QString param3;
137 151
138 stream >> sourceChannel >> uid; 152 stream >> sourceChannel >> uid;
139 153
140 if (_usedSourceParameters == 0) 154 if (_usedSourceParameters == 0)
141 { 155 {
142 emit receivedMessageFromSource(sourceChannel, uid); 156 emit receivedMessageFromSource(sourceChannel, uid);
143 } 157 }
144 else if (_usedSourceParameters == 1) 158 else if (_usedSourceParameters == 1)
145 { 159 {
146 stream >> param1; 160 stream >> param1;
147 emit receivedMessageFromSource(sourceChannel, uid, param1); 161 emit receivedMessageFromSource(sourceChannel, uid, param1);
148 } 162 }
149 else if (_usedSourceParameters == 2) 163 else if (_usedSourceParameters == 2)
150 { 164 {
151 stream >> param1 >> param2; 165 stream >> param1 >> param2;
152 emit receivedMessageFromSource(sourceChannel, uid, param1, param2); 166 emit receivedMessageFromSource(sourceChannel, uid, param1, param2);
153 } 167 }
154 else if (_usedSourceParameters == 3) 168 else if (_usedSourceParameters == 3)
155 { 169 {
156 stream >> param1 >> param2 >> param3; 170 stream >> param1 >> param2 >> param3;
157 emit receivedMessageFromSource(sourceChannel, uid, param1, param2, param3); 171 emit receivedMessageFromSource(sourceChannel, uid, param1, param2, param3);
158 } 172 }
159 173
160 return true; 174 return true;
161 } 175 }
162 176
163 return false; 177 return false;
164} 178}
165 179
166 180
167/********************************************************************************* 181/*********************************************************************************
168 * 182 *
169 ********************************************************************************/ 183 ********************************************************************************/
170 184
171 185
172QCopMapTransferItem::QCopMapTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage) 186QCopMapTransferItem::QCopMapTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
173 : QCopTransferItem(usedSourceParameters, sourceMessage, targetChannel,targetMessage) 187 : QCopTransferItem(usedSourceParameters, sourceMessage, targetChannel,targetMessage)
174{ 188{
175 //targetMessage returns later two parameters: uid, and map<qstring,qstring> 189 //targetMessage returns later two parameters: uid, and map<qstring,qstring>
176 _targetMessageParameters = "(QString,QMAP<QString,QString>)"; 190 _targetMessageParameters = "(QString,QMAP<QString,QString>)";
177} 191}
178 192
179/*********************************************************************************/ 193/*********************************************************************************/
180bool QCopMapTransferItem::sendMessageToSource(const QString& uid, const QMap<QString,QString>& nameEmailMap) 194bool QCopMapTransferItem::sendMessageToSource(const QString& uid, const QMap<QString,QString>& nameEmailMap)
181{ 195{
182#ifndef DESKTOP_VERSION 196#ifndef DESKTOP_VERSION
183 //targetMessage passes two parameters: uid, map 197 //targetMessage passes two parameters: uid, map
184 QString targetMessage = _targetMessage + _targetMessageParameters; 198 QString targetMessage = _targetMessage + _targetMessageParameters;
185 199
186 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1()); 200 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1());
187 qDebug("passing uid(%s) and map as parameter to QCopEnvelope", uid.latin1()); 201 qDebug("passing uid(%s) and map as parameter to QCopEnvelope", uid.latin1());
188 202
189 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1()); 203 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1());
190 //US we need no names in the To field. The emailadresses are enough 204 //US we need no names in the To field. The emailadresses are enough
191 205
192 e << uid << nameEmailMap; 206 e << uid << nameEmailMap;
193 207
208 qApp->processEvents();
209
194 return true; 210 return true;
195 211
196#else 212#else
197 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) ); 213 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
198 return false; 214 return false;
199#endif 215#endif
200 216
201} 217}
202 218
203 219
204/*********************************************************************************/ 220/*********************************************************************************/
205bool QCopMapTransferItem::appMessage( const QCString& cmsg, const QByteArray& data ) 221bool QCopMapTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
206{ 222{
207 bool res = QCopTransferItem::appMessage( cmsg, data ); 223 bool res = QCopTransferItem::appMessage( cmsg, data );
208 224
209 if (res == false) 225 if (res == false)
210 { 226 {
211 QDataStream stream( data, IO_ReadOnly ); 227 QDataStream stream( data, IO_ReadOnly );
212 228
213 qDebug("QCopMapTransferItem- QCOP message received: %s ", cmsg.data() ); 229// qDebug("QCopMapTransferItem- QCOP message received: %s ", cmsg.data() );
214 230
215 //we are in the source and get an answer from the target 231 //we are in the source and get an answer from the target
216 if ((_targetMessage + _targetMessageParameters) == cmsg.data()) 232 if ((_targetMessage + _targetMessageParameters) == cmsg.data())
217 { 233 {
218 QMap<QString,QString> adrMap; 234 QMap<QString,QString> adrMap;
219 QString uid; 235 QString uid;
220 236
221 stream >> uid >> adrMap; 237 stream >> uid >> adrMap;
222 238
223 emit receivedMessageFromTarget(uid, adrMap); 239 emit receivedMessageFromTarget(uid, adrMap);
224 240
225 241
226 return true; 242 return true;
227 } 243 }
228 } 244 }
229 245
230 return false; 246 return false;
231} 247}
232 248
233 249
234/********************************************************************************* 250/*********************************************************************************
235 * 251 *
236 ********************************************************************************/ 252 ********************************************************************************/
237 253
238 254
239QCopListTransferItem::QCopListTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage) 255QCopListTransferItem::QCopListTransferItem(int usedSourceParameters, const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
240 : QCopTransferItem(usedSourceParameters, sourceMessage, targetChannel,targetMessage) 256 : QCopTransferItem(usedSourceParameters, sourceMessage, targetChannel,targetMessage)
241{ 257{
242 //targetMessage returns later two parameters: uid, and three lists 258 //targetMessage returns later two parameters: uid, and three lists
243 _targetMessageParameters = "(QString,QStringList,QStringList,QStringList)"; 259 _targetMessageParameters = "(QString,QStringList,QStringList,QStringList)";
244} 260}
245 261
246/*********************************************************************************/ 262/*********************************************************************************/
247bool QCopListTransferItem::sendMessageToSource(const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3) 263bool QCopListTransferItem::sendMessageToSource(const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
248{ 264{
249#ifndef DESKTOP_VERSION 265#ifndef DESKTOP_VERSION
250 //targetMessage passes two parameters: uid, map 266 //targetMessage passes two parameters: uid, map
251 QString targetMessage = _targetMessage + _targetMessageParameters; 267 QString targetMessage = _targetMessage + _targetMessageParameters;
252 268
253 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1()); 269 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1());
254 qDebug("passing uid(%s) and list1, list2, list3 as parameter to QCopEnvelope", uid.latin1()); 270 qDebug("passing uid(%s) and list1, list2, list3 as parameter to QCopEnvelope", uid.latin1());
255 271
256 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1()); 272 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1());
257 //US we need no names in the To field. The emailadresses are enough 273 //US we need no names in the To field. The emailadresses are enough
258 274
259 e << uid << list1 << list2 << list3; 275 e << uid << list1 << list2 << list3;
260 276
277 qApp->processEvents();
278
261 return true; 279 return true;
262 280
263#else 281#else
264 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) ); 282 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
265 return false; 283 return false;
266#endif 284#endif
267 285
268} 286}
269 287
270 288
271/*********************************************************************************/ 289/*********************************************************************************/
272bool QCopListTransferItem::appMessage( const QCString& cmsg, const QByteArray& data ) 290bool QCopListTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
273{ 291{
274 bool res = QCopTransferItem::appMessage( cmsg, data ); 292 bool res = QCopTransferItem::appMessage( cmsg, data );
275 293
276 if (res == false) 294 if (res == false)
277 { 295 {
278 QDataStream stream( data, IO_ReadOnly ); 296 QDataStream stream( data, IO_ReadOnly );
279 297
280 qDebug("QCopListTransferItem- QCOP message received: %s ", cmsg.data() ); 298// qDebug("QCopListTransferItem- QCOP message received: %s ", cmsg.data() );
281 299
282 //we are in the source and get an answer from the target 300 //we are in the source and get an answer from the target
283 if ((_targetMessage + _targetMessageParameters) == cmsg.data()) 301 if ((_targetMessage + _targetMessageParameters) == cmsg.data())
284 { 302 {
285 QStringList list1; 303 QStringList list1;
286 QStringList list2; 304 QStringList list2;
287 QStringList list3; 305 QStringList list3;
288 QString uid; 306 QString uid;
289 307
290 stream >> uid >> list1 >> list2 >> list3; 308 stream >> uid >> list1 >> list2 >> list3;
291 309
292 emit receivedMessageFromTarget(uid, list1, list2, list3); 310 emit receivedMessageFromTarget(uid, list1, list2, list3);
293 311
294 312
295 return true; 313 return true;
296 } 314 }
297 } 315 }
298 316
299 return false; 317 return false;
300} 318}
301 319
302 320
303 321
304/********************************************************************************* 322/*********************************************************************************
305 * 323 *
306 ********************************************************************************/ 324 ********************************************************************************/
307 325
308 326
309ExternalAppHandler *ExternalAppHandler::sInstance = 0; 327ExternalAppHandler *ExternalAppHandler::sInstance = 0;
310static KStaticDeleter<ExternalAppHandler> staticDeleter; 328static KStaticDeleter<ExternalAppHandler> staticDeleter;
311 329
312ExternalAppHandler::ExternalAppHandler() 330ExternalAppHandler::ExternalAppHandler()
313{ 331{
314 mDefaultItems.setAutoDelete(true); 332 mDefaultItems.setAutoDelete(true);
315 333
316 mNameEmailUidListFromKAPITransfer = new QCopListTransferItem(0, "requestNameEmailUIDListFromKAPI", "QPE/Application/kapi", "receiveNameEmailUIDList"); 334 mNameEmailUidListFromKAPITransfer = new QCopListTransferItem(0, "requestNameEmailUIDListFromKAPI", "QPE/Application/kapi", "receiveNameEmailUIDList");
317 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&)), this, SIGNAL (requestForNameEmailUidList(const QString&, const QString&))); 335 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&)), this, SIGNAL (requestForNameEmailUidList(const QString&, const QString&)));
318 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&))); 336 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)));
319 337
320//US mFindByEmailFromKAPITransfer = new QCopListTransferItem(1, "requestFindByEmailFromKAPI", "QPE/Application/kapi", "receiveFindByEmailNameEmailUIDList"); 338//US mFindByEmailFromKAPITransfer = new QCopListTransferItem(1, "requestFindByEmailFromKAPI", "QPE/Application/kapi", "receiveFindByEmailNameEmailUIDList");
321//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&)), this, SIGNAL (requestForFindByEmail(const QString&, const QString&, const QString&))); 339//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&)), this, SIGNAL (requestForFindByEmail(const QString&, const QString&, const QString&)));
322//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedFindByEmailEvent(const QString&, const QStringList&, const QStringList&, const QStringList&))); 340//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedFindByEmailEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)));
323 341
324 mDisplayDetails = new QCopListTransferItem(3, "requestDisplayDetailsFromKAPI", "QPE/Application/kapi", ""); 342 mDisplayDetails = new QCopListTransferItem(3, "requestDisplayDetailsFromKAPI", "QPE/Application/kapi", "");
325 connect(mDisplayDetails, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&, const QString&)), this, SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&))); 343 connect(mDisplayDetails, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&, const QString&, const QString&)), this, SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
326} 344}
327 345
328ExternalAppHandler::~ExternalAppHandler() 346ExternalAppHandler::~ExternalAppHandler()
329{ 347{
330} 348}
331 349
332void ExternalAppHandler::loadConfig() 350void ExternalAppHandler::loadConfig()
333{ 351{
334 352
335 mDefaultItems.clear(); 353 mDefaultItems.clear();
336 354
337 mEmailAppAvailable = UNDEFINED; 355 mEmailAppAvailable = UNDEFINED;
338 mPhoneAppAvailable = UNDEFINED; 356 mPhoneAppAvailable = UNDEFINED;
339 mFaxAppAvailable = UNDEFINED; 357 mFaxAppAvailable = UNDEFINED;
340 mSMSAppAvailable = UNDEFINED; 358 mSMSAppAvailable = UNDEFINED;
341 mPagerAppAvailable = UNDEFINED; 359 mPagerAppAvailable = UNDEFINED;
342 360
343 361
344 QString opiepath = QString::fromLatin1( getenv("OPIEDIR") ); 362 QString opiepath = QString::fromLatin1( getenv("OPIEDIR") );
345 QString qtopiapath = QString::fromLatin1( getenv("QPEDIR") ); 363 QString qtopiapath = QString::fromLatin1( getenv("QPEDIR") );
346 364
347 if (opiepath.isEmpty()) 365 if (opiepath.isEmpty())
348 opiepath = qtopiapath; 366 opiepath = qtopiapath;
349 367
350 //mailclients 368 //mailclients
351 QString mailmsg1 = "writeMail(QString,QString)"; 369 QString mailmsg1 = "writeMail(QString,QString)";
352 QString mailmsg2 = "writeMail(QMap(QString,QString))"; 370 QString mailmsg2 = "writeMail(QMap(QString,QString))";
353 371
354 QString undefined = ""; 372 QString undefined = "";
355 373
356 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::NONE_EMC, "No email client installed", undefined, undefined, undefined, undefined, undefined); 374 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::NONE_EMC, "No email client installed", undefined, undefined, undefined, undefined, undefined);
357 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OTHER_EMC, "Userdefined email client", undefined, undefined, undefined, undefined, undefined); 375 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OTHER_EMC, "Userdefined email client", undefined, undefined, undefined, undefined, undefined);
358 376
359 if (( QFile::exists( qtopiapath + "/bin/ompi" )) || 377 if (( QFile::exists( qtopiapath + "/bin/ompi" )) ||
360 ( QFile::exists( opiepath + "/bin/ompi" ))) 378 ( QFile::exists( opiepath + "/bin/ompi" )))
361 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OMPI_EMC, "OM/Pi email client", "QPE/Application/ompi", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2"); 379 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OMPI_EMC, "OM/Pi email client", "QPE/Application/ompi", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2");
362 380
363 if ( QFile::exists( qtopiapath + "/bin/qtmail" )) 381 if ( QFile::exists( qtopiapath + "/bin/qtmail" ))
364 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::QTOPIA_EMC, "Qtopia email client", "QPE/Application/qtmail", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2"); 382 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::QTOPIA_EMC, "Qtopia email client", "QPE/Application/qtmail", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2");
365 383
366 if ( QFile::exists( opiepath + "/bin/opiemail" )) 384 if ( QFile::exists( opiepath + "/bin/opiemail" ))
367 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OPIE_EMC, "Opie email client", "QPE/Application/opiemail", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2"); 385 addDefaultAppItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::OPIE_EMC, "Opie email client", "QPE/Application/opiemail", mailmsg1, "%1;%2", mailmsg2, "TO=%1;ATTACHMENT=%2");
368 386
369 387
370 388
371 //phoneclients 389 //phoneclients
372 390
373 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::NONE_PHC, "No phone client installed", undefined, undefined, undefined, undefined, undefined); 391 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::NONE_PHC, "No phone client installed", undefined, undefined, undefined, undefined, undefined);
374 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::OTHER_PHC, "Other phone client", undefined, undefined, undefined, undefined, undefined); 392 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::OTHER_PHC, "Other phone client", undefined, undefined, undefined, undefined, undefined);
375 if (( QFile::exists( qtopiapath + "/bin/kppi" )) || 393 if (( QFile::exists( qtopiapath + "/bin/kppi" )) ||
376 ( QFile::exists( opiepath + "/bin/kppi" ))) 394 ( QFile::exists( opiepath + "/bin/kppi" )))
377 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::KPPI_PHC, "KP/Pi phone client", "QPE/Application/kppi", "-ring:%1", "", undefined, undefined); 395 addDefaultAppItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::KPPI_PHC, "KP/Pi phone client", "QPE/Application/kppi", "-ring:%1", "", undefined, undefined);
378 396
379 //faxclients 397 //faxclients
380 addDefaultAppItem(ExternalAppHandler::FAX, KPimGlobalPrefs::NONE_FAC, "No fax client installed", undefined, undefined, undefined, undefined, undefined); 398 addDefaultAppItem(ExternalAppHandler::FAX, KPimGlobalPrefs::NONE_FAC, "No fax client installed", undefined, undefined, undefined, undefined, undefined);
381 addDefaultAppItem(ExternalAppHandler::FAX, KPimGlobalPrefs::OTHER_FAC, "Other fax client", undefined, undefined, undefined, undefined, undefined); 399 addDefaultAppItem(ExternalAppHandler::FAX, KPimGlobalPrefs::OTHER_FAC, "Other fax client", undefined, undefined, undefined, undefined, undefined);
382 400
383 //smsclients 401 //smsclients
384 addDefaultAppItem(ExternalAppHandler::SMS, KPimGlobalPrefs::NONE_SMC, "No sms client installed", undefined, undefined, undefined, undefined, undefined); 402 addDefaultAppItem(ExternalAppHandler::SMS, KPimGlobalPrefs::NONE_SMC, "No sms client installed", undefined, undefined, undefined, undefined, undefined);
385 addDefaultAppItem(ExternalAppHandler::SMS, KPimGlobalPrefs::OTHER_SMC, "Other sms client", undefined, undefined, undefined, undefined, undefined); 403 addDefaultAppItem(ExternalAppHandler::SMS, KPimGlobalPrefs::OTHER_SMC, "Other sms client", undefined, undefined, undefined, undefined, undefined);
386 404
387 //pagerclients 405 //pagerclients
388 addDefaultAppItem(ExternalAppHandler::PAGER, KPimGlobalPrefs::NONE_PAC, "No pager client installed", undefined, undefined, undefined, undefined, undefined); 406 addDefaultAppItem(ExternalAppHandler::PAGER, KPimGlobalPrefs::NONE_PAC, "No pager client installed", undefined, undefined, undefined, undefined, undefined);
389 addDefaultAppItem(ExternalAppHandler::PAGER, KPimGlobalPrefs::OTHER_PAC, "Other pager client", undefined, undefined, undefined, undefined, undefined); 407 addDefaultAppItem(ExternalAppHandler::PAGER, KPimGlobalPrefs::OTHER_PAC, "Other pager client", undefined, undefined, undefined, undefined, undefined);
390 408
391} 409}
392 410
393ExternalAppHandler *ExternalAppHandler::instance() 411ExternalAppHandler *ExternalAppHandler::instance()
394{ 412{
395 if ( !sInstance ) { 413 if ( !sInstance ) {
396 sInstance = staticDeleter.setObject( new ExternalAppHandler() ); 414 sInstance = staticDeleter.setObject( new ExternalAppHandler() );
397 sInstance->loadConfig(); 415 sInstance->loadConfig();
398 } 416 }
399 417
400 return sInstance; 418 return sInstance;
401} 419}
402 420
403void ExternalAppHandler::addDefaultAppItem(Types type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameter, const QString& message2, const QString& parameter2) 421void ExternalAppHandler::addDefaultAppItem(Types type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameter, const QString& message2, const QString& parameter2)
404{ 422{
405 DefaultAppItem* dai = new DefaultAppItem(type, id, label, channel, message, parameter, message2, parameter2); 423 DefaultAppItem* dai = new DefaultAppItem(type, id, label, channel, message, parameter, message2, parameter2);
406 424
407 mDefaultItems.append(dai); 425 mDefaultItems.append(dai);
408} 426}
409 427
410 428
411QList<DefaultAppItem> ExternalAppHandler::getAvailableDefaultItems(Types type) 429QList<DefaultAppItem> ExternalAppHandler::getAvailableDefaultItems(Types type)
412{ 430{
413 QList<DefaultAppItem> list; 431 QList<DefaultAppItem> list;
414 432
415 DefaultAppItem* dai; 433 DefaultAppItem* dai;
416 434
417 for ( dai=mDefaultItems.first(); dai != 0; dai=mDefaultItems.next() ) 435 for ( dai=mDefaultItems.first(); dai != 0; dai=mDefaultItems.next() )
418 { 436 {
419 if (dai->_type == type) 437 if (dai->_type == type)
420 list.append(dai); 438 list.append(dai);
421 } 439 }
422 440
423 return list; 441 return list;
424} 442}
425 443
426DefaultAppItem* ExternalAppHandler::getDefaultItem(Types type, int clientid) 444DefaultAppItem* ExternalAppHandler::getDefaultItem(Types type, int clientid)
427{ 445{
428 DefaultAppItem* dai; 446 DefaultAppItem* dai;
429 447
430 for ( dai=mDefaultItems.first(); dai != 0; dai=mDefaultItems.next() ) 448 for ( dai=mDefaultItems.first(); dai != 0; dai=mDefaultItems.next() )
431 { 449 {
432 if (dai->_type == type && dai->_id == clientid) 450 if (dai->_type == type && dai->_id == clientid)
433 return dai; 451 return dai;
434 } 452 }
435 453
436 return 0; 454 return 0;
437} 455}
438 456
439bool ExternalAppHandler::isEmailAppAvailable() 457bool ExternalAppHandler::isEmailAppAvailable()
440{ 458{
441#ifndef DESKTOP_VERSION 459#ifndef DESKTOP_VERSION
442 if (mEmailAppAvailable == UNDEFINED) 460 if (mEmailAppAvailable == UNDEFINED)
443 { 461 {
444 int client = KPimGlobalPrefs::instance()->mEmailClient; 462 int client = KPimGlobalPrefs::instance()->mEmailClient;
445 if (client == KPimGlobalPrefs::NONE_EMC) 463 if (client == KPimGlobalPrefs::NONE_EMC)
446 mEmailAppAvailable = UNAVAILABLE; 464 mEmailAppAvailable = UNAVAILABLE;
447 else 465 else
448 mEmailAppAvailable = AVAILABLE; 466 mEmailAppAvailable = AVAILABLE;
449 } 467 }
450 return (mEmailAppAvailable == AVAILABLE); 468 return (mEmailAppAvailable == AVAILABLE);
451 469
452#else //DESKTOP_VERSION 470#else //DESKTOP_VERSION
453 return false; 471 return false;
@@ -861,138 +879,138 @@ bool ExternalAppHandler::callByFax( const QString& faxnumber )
861 879
862 880
863 //first check if one of the mailers need the emails right in the message. 881 //first check if one of the mailers need the emails right in the message.
864 message = translateMessage(message, faxnumber, ""); 882 message = translateMessage(message, faxnumber, "");
865 883
866 884
867 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", channel.latin1(), message.latin1()); 885 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", channel.latin1(), message.latin1());
868 qDebug("passing faxnumber(%s) as parameter in the form %s to QCopEnvelope", faxnumber.latin1(), parameters.latin1()); 886 qDebug("passing faxnumber(%s) as parameter in the form %s to QCopEnvelope", faxnumber.latin1(), parameters.latin1());
869 887
870 QCopEnvelope e(channel.latin1(), message.latin1()); 888 QCopEnvelope e(channel.latin1(), message.latin1());
871 //US we need no names in the To field. The emailadresses are enough 889 //US we need no names in the To field. The emailadresses are enough
872 890
873 passParameters(&e, parameters, faxnumber, ""); 891 passParameters(&e, parameters, faxnumber, "");
874 892
875 893
876#else 894#else
877 KMessageBox::sorry( 0, i18n( "This version does not support the sending of faxes." ) ); 895 KMessageBox::sorry( 0, i18n( "This version does not support the sending of faxes." ) );
878#endif 896#endif
879 897
880 898
881 return true; 899 return true;
882} 900}
883 901
884/************************************************************************** 902/**************************************************************************
885 * 903 *
886 **************************************************************************/ 904 **************************************************************************/
887 905
888 906
889QString& ExternalAppHandler::translateMessage(QString& message, const QString& param1, const QString& param2 ) const 907QString& ExternalAppHandler::translateMessage(QString& message, const QString& param1, const QString& param2 ) const
890{ 908{
891 message = message.replace( QRegExp("%1"), param1 ); 909 message = message.replace( QRegExp("%1"), param1 );
892 return message.replace( QRegExp("%2"), param2 ); 910 return message.replace( QRegExp("%2"), param2 );
893} 911}
894 912
895/************************************************************************** 913/**************************************************************************
896 * 914 *
897 **************************************************************************/ 915 **************************************************************************/
898 916
899void ExternalAppHandler::passParameters(QCopEnvelope* e, const QString& parameters, const QString& param1 , const QString& param2) const 917void ExternalAppHandler::passParameters(QCopEnvelope* e, const QString& parameters, const QString& param1 , const QString& param2) const
900{ 918{
901#ifndef DESKTOP_VERSION 919#ifndef DESKTOP_VERSION
902 QMap<QString, QString> valmap; 920 QMap<QString, QString> valmap;
903 bool useValMap = false; 921 bool useValMap = false;
904 922
905 // first extract all parts of the parameters. 923 // first extract all parts of the parameters.
906 QStringList paramlist = QStringList::split(";", parameters); 924 QStringList paramlist = QStringList::split(";", parameters);
907 925
908 //Now check how many parts we have. 926 //Now check how many parts we have.
909 //=0 :no params to pass 927 //=0 :no params to pass
910 //>0 :parameters to pass 928 //>0 :parameters to pass
911 for ( QStringList::Iterator it = paramlist.begin(); it != paramlist.end(); ++it ) 929 for ( QStringList::Iterator it = paramlist.begin(); it != paramlist.end(); ++it )
912 { 930 {
913 QString param = (*it); 931 QString param = (*it);
914 QStringList keyvallist = QStringList::split("=", param); 932 QStringList keyvallist = QStringList::split("=", param);
915 933
916 //if we have keyvalue pairs, we assume that we pass a map to the envelope 934 //if we have keyvalue pairs, we assume that we pass a map to the envelope
917 QStringList::Iterator it2 = keyvallist.begin(); 935 QStringList::Iterator it2 = keyvallist.begin();
918 QString key = (*it2); 936 QString key = (*it2);
919 key = key.replace( QRegExp("%1"), param1 ); 937 key = key.replace( QRegExp("%1"), param1 );
920 key = key.replace( QRegExp("%2"), param2 ); 938 key = key.replace( QRegExp("%2"), param2 );
921 ++it2; 939 ++it2;
922 940
923 if(it2 != keyvallist.end()) 941 if(it2 != keyvallist.end())
924 { 942 {
925 QString value = (*it2); 943 QString value = (*it2);
926 value = value.replace( QRegExp("%1"), param1 ); 944 value = value.replace( QRegExp("%1"), param1 );
927 value = value.replace( QRegExp("%2"), param2 ); 945 value = value.replace( QRegExp("%2"), param2 );
928 946
929 valmap.insert(key, value); 947 valmap.insert(key, value);
930 useValMap = true; 948 useValMap = true;
931 } 949 }
932 else 950 else
933 { 951 {
934 // qDebug("pass parameter << %s", key.latin1()); 952 // qDebug("pass parameter << %s", key.latin1());
935 (*e) << key; 953 (*e) << key;
936 } 954 }
937 } 955 }
938 956
939 if (useValMap == true) 957 if (useValMap == true)
940 (*e) << valmap; 958 (*e) << valmap;
941 959
942#endif 960#endif
943 961
944} 962}
945 963
946 964
947 965
948/************************************************************************** 966/**************************************************************************
949 * 967 *
950 **************************************************************************/ 968 **************************************************************************/
951 969
952void ExternalAppHandler::appMessage( const QCString& cmsg, const QByteArray& data ) 970void ExternalAppHandler::appMessage( const QCString& cmsg, const QByteArray& data )
953{ 971{
954 bool res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data ); 972 bool res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data );
955 973
956 if (!res) 974 if (!res)
957 res = mDisplayDetails->appMessage( cmsg, data ); 975 res = mDisplayDetails->appMessage( cmsg, data );
958 976
959// if (!res) 977// if (!res)
960// res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data ); 978// res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data );
961} 979}
962 980
963 981
964 982
965bool ExternalAppHandler::requestNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& sessionuid) 983bool ExternalAppHandler::requestNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& sessionuid)
966{ 984{
967 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel); 985 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel);
968 return mNameEmailUidListFromKAPITransfer->sendMessageToTarget(sessionuid); 986 return mNameEmailUidListFromKAPITransfer->sendMessageToTarget(sessionuid);
969} 987}
970 988
971bool ExternalAppHandler::returnNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QStringList& list1, const QStringList& list2, const QStringList& list3) 989bool ExternalAppHandler::returnNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
972{ 990{
973 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel); 991 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel);
974 return mNameEmailUidListFromKAPITransfer->sendMessageToSource(sessionuid, list1, list2, list3); 992 return mNameEmailUidListFromKAPITransfer->sendMessageToSource(sessionuid, list1, list2, list3);
975} 993}
976 994
977bool ExternalAppHandler::requestFindByEmailFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QString& email) 995bool ExternalAppHandler::requestFindByEmailFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QString& email)
978{ 996{
979 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel); 997 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel);
980 return mFindByEmailFromKAPITransfer->sendMessageToTarget(sessionuid, email); 998 return mFindByEmailFromKAPITransfer->sendMessageToTarget(sessionuid, email);
981} 999}
982 1000
983bool ExternalAppHandler::returnFindByEmailFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QStringList& list1, const QStringList& list2, const QStringList& list3) 1001bool ExternalAppHandler::returnFindByEmailFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
984{ 1002{
985 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel); 1003 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel);
986 return mFindByEmailFromKAPITransfer->sendMessageToSource(sessionuid, list1, list2, list3); 1004 return mFindByEmailFromKAPITransfer->sendMessageToSource(sessionuid, list1, list2, list3);
987} 1005}
988 1006
989bool ExternalAppHandler::requestDetailsFromKAPI(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 1007bool ExternalAppHandler::requestDetailsFromKAPI(const QString& name, const QString& email, const QString& uid)
990{ 1008{
991 mDisplayDetails->setSourceChannel(sourceChannel); 1009 mDisplayDetails->setSourceChannel("");
992 return mDisplayDetails->sendMessageToTarget(sessionuid, name, email, uid); 1010 return mDisplayDetails->sendMessageToTarget("", name, email, uid);
993} 1011}
994 1012
995 1013
996 1014
997 1015
998 1016