summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-17 00:09:26 (UTC)
committer ulf69 <ulf69>2004-08-17 00:09:26 (UTC)
commitab3b10a5018152dedbdb64d0d5a4bd8ec752ccdb (patch) (unidiff)
treea9f62469297dda2981807b5235e7812cac72f44c
parent0e46d151bca931ff5c69a637d91cfcc381094e0b (diff)
downloadkdepimpi-ab3b10a5018152dedbdb64d0d5a4bd8ec752ccdb.zip
kdepimpi-ab3b10a5018152dedbdb64d0d5a4bd8ec752ccdb.tar.gz
kdepimpi-ab3b10a5018152dedbdb64d0d5a4bd8ec752ccdb.tar.bz2
QCop implementation for KOrganizer to access Ka/pi directly
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp33
-rw-r--r--kaddressbook/kabcore.h3
-rw-r--r--kaddressbook/mainembedded.cpp19
-rw-r--r--libkdepim/externalapphandler.cpp282
-rw-r--r--libkdepim/externalapphandler.h111
5 files changed, 435 insertions, 13 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6807bed..e7c815e 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -62,16 +62,18 @@
62#include "ldapsearchdialog.h" 62#include "ldapsearchdialog.h"
63#include "printing/printingwizard.h" 63#include "printing/printingwizard.h"
64#else // KAB_EMBEDDED 64#else // KAB_EMBEDDED
65 65
66#include <kapplication.h> 66#include <kapplication.h>
67#include "KDGanttMinimizeSplitter.h" 67#include "KDGanttMinimizeSplitter.h"
68#include "kaddressbookmain.h" 68#include "kaddressbookmain.h"
69#include "kactioncollection.h" 69#include "kactioncollection.h"
70#include "addresseedialog.h"
71
70#include <qapp.h> 72#include <qapp.h>
71#include <qmenubar.h> 73#include <qmenubar.h>
72//#include <qtoolbar.h> 74//#include <qtoolbar.h>
73#include <qmessagebox.h> 75#include <qmessagebox.h>
74#include <kdebug.h> 76#include <kdebug.h>
75#include <kiconloader.h> // needed for SmallIcon 77#include <kiconloader.h> // needed for SmallIcon
76#include <kresources/kcmkresources.h> 78#include <kresources/kcmkresources.h>
77#include <ktoolbar.h> 79#include <ktoolbar.h>
@@ -206,23 +208,28 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
206 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 208 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
207 SLOT( incrementalSearch( const QString& ) ) ); 209 SLOT( incrementalSearch( const QString& ) ) );
208 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 210 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
209 mJumpButtonBar, SLOT( recreateButtons() ) ); 211 mJumpButtonBar, SLOT( recreateButtons() ) );
210 212
211 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 213 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
212 SLOT( sendMail( const QString& ) ) ); 214 SLOT( sendMail( const QString& ) ) );
213 215
216
217 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&, const QString&)));
218
219
214#ifndef KAB_EMBEDDED 220#ifndef KAB_EMBEDDED
215 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 221 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
216 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 222 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
217 223
218 connect( mDetails, SIGNAL( browse( const QString& ) ), 224 connect( mDetails, SIGNAL( browse( const QString& ) ),
219 SLOT( browse( const QString& ) ) ); 225 SLOT( browse( const QString& ) ) );
220 226
227
221 mAddressBookService = new KAddressBookService( this ); 228 mAddressBookService = new KAddressBookService( this );
222 229
223#endif //KAB_EMBEDDED 230#endif //KAB_EMBEDDED
224 mEditorDialog = 0; 231 mEditorDialog = 0;
225 createAddresseeEditorDialog( this ); 232 createAddresseeEditorDialog( this );
226 setModified( false ); 233 setModified( false );
227} 234}
228 235
@@ -1960,12 +1967,38 @@ void KABCore::configureResources()
1960 1967
1961 if ( !dlg.exec() ) 1968 if ( !dlg.exec() )
1962 return; 1969 return;
1963 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 1970 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
1964} 1971}
1965#endif //KAB_EMBEDDED 1972#endif //KAB_EMBEDDED
1966 1973
1967 1974
1975/* this method will be called through the QCop interface from Ko/Pi to select addresses
1976 * for the attendees list of an event.
1977 */
1978void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid, const QString& param1)
1979{
1980 //param1 is usually empty for this kind of request
1981
1982 QStringList nameList;
1983 QStringList emailList;
1984 QStringList uidList;
1985
1986 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
1987 uint i=0;
1988 for (i=0; i < list.count(); i++)
1989 {
1990 nameList.append(list[i].realName());
1991 emailList.append(list[i].preferredEmail());
1992 uidList.append(list[i].uid());
1993 }
1994
1995 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
1996
1997}
1998
1999
2000
1968 2001
1969#ifndef KAB_EMBEDDED 2002#ifndef KAB_EMBEDDED
1970#include "kabcore.moc" 2003#include "kabcore.moc"
1971#endif //KAB_EMBEDDED 2004#endif //KAB_EMBEDDED
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index d4d28f1..fe778af 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -323,16 +323,19 @@ class KABCore : public QWidget
323 */ 323 */
324 void print(); 324 void print();
325 325
326 /** 326 /**
327 Registers a new GUI client, so plugins can register its actions. 327 Registers a new GUI client, so plugins can register its actions.
328 */ 328 */
329 void addGUIClient( KXMLGUIClient *client ); 329 void addGUIClient( KXMLGUIClient *client );
330 330
331 void requestForNameEmailUidList(const QString& sourceChannel, const QString& uid, const QString& param1);
332
333
331 signals: 334 signals:
332 void contactSelected( const QString &name ); 335 void contactSelected( const QString &name );
333 void contactSelected( const QPixmap &pixmap ); 336 void contactSelected( const QPixmap &pixmap );
334 public slots: 337 public slots:
335 void setDetailsVisible( bool visible ); 338 void setDetailsVisible( bool visible );
336 void setDetailsToState(); 339 void setDetailsToState();
337 private slots: 340 private slots:
338 void setJumpButtonBarVisible( bool visible ); 341 void setJumpButtonBarVisible( bool visible );
diff --git a/kaddressbook/mainembedded.cpp b/kaddressbook/mainembedded.cpp
index 7f368eb..850e5b2 100644
--- a/kaddressbook/mainembedded.cpp
+++ b/kaddressbook/mainembedded.cpp
@@ -1,41 +1,42 @@
1#ifndef DESKTOP_VERSION 1#ifndef DESKTOP_VERSION
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <stdlib.h> 3#include <stdlib.h>
4#else 4#else
5#include <qapplication.h> 5#include <qapplication.h>
6#include <qwindowsstyle.h> 6#include <qwindowsstyle.h>
7#include <qplatinumstyle.h> 7#include <qplatinumstyle.h>
8#include <qmainwindow.h> 8#include <qmainwindow.h>
9#endif 9#endif
10 10
11#include <kstandarddirs.h> 11#include <kstandarddirs.h>
12#include <kglobal.h> 12#include <kglobal.h>
13#include <stdio.h> 13#include <stdio.h>
14#include <qdir.h> 14#include <qdir.h>
15#include "kaddressbookmain.h" 15#include "kaddressbookmain.h"
16#include "externalapphandler.h"
16 17
17int main( int argc, char **argv ) 18int main( int argc, char **argv )
18{ 19{
19#ifndef DESKTOP_VERSION 20#ifndef DESKTOP_VERSION
20 QPEApplication a( argc, argv ); 21 QPEApplication a( argc, argv );
21 a.setKeepRunning (); 22 a.setKeepRunning ();
22#else 23#else
23 QApplication a( argc, argv ); 24 QApplication a( argc, argv );
24 QApplication::setStyle( new QPlatinumStyle ()); 25 QApplication::setStyle( new QPlatinumStyle ());
25#endif 26#endif
26 27
27 bool exitHelp = false; 28 bool exitHelp = false;
28 if ( argc > 1 ) { 29 if ( argc > 1 ) {
29 QString command = argv[1]; 30 QString command = argv[1];
30 if ( command == "-help" ){ 31 if ( command == "-help" ){
31 printf("KA/E command line commands:\n"); 32 printf("KA/E command line commands:\n");
32 printf(" no command: Start KA/E in usual way\n"); 33 printf(" no command: Start KA/E in usual way\n");
33 printf(" -help: This output\n"); 34 printf(" -help: This output\n");
34 printf(" KA/E is exiting now. Bye!\n"); 35 printf(" KA/E is exiting now. Bye!\n");
35 exitHelp = true; 36 exitHelp = true;
36 } 37 }
37 } 38 }
38 if ( ! exitHelp ) { 39 if ( ! exitHelp ) {
39 40
40 KGlobal::setAppName( "kaddressbook" ); 41 KGlobal::setAppName( "kaddressbook" );
41#ifndef DESKTOP_VERSION 42#ifndef DESKTOP_VERSION
@@ -44,31 +45,31 @@ int main( int argc, char **argv )
44 else 45 else
45 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/"); 46 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/");
46#else 47#else
47 QString fileName ; 48 QString fileName ;
48 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/"; 49 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/";
49 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 50 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
50 QApplication::addLibraryPath ( qApp->applicationDirPath () ); 51 QApplication::addLibraryPath ( qApp->applicationDirPath () );
51 52
52#endif 53#endif
53 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook"))); 54 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook")));
54 KAddressBookMain m ; 55 KAddressBookMain m ;
55//US MainWindow m; 56//US MainWindow m;
56//US QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& ))); 57 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
57 58
58#ifndef DESKTOP_VERSION 59#ifndef DESKTOP_VERSION
59 a.showMainWidget( &m ); 60 a.showMainWidget( &m );
60#else 61#else
61 a.setMainWidget( &m ); 62 a.setMainWidget( &m );
62 m.resize (640, 480 ); 63 m.resize (640, 480 );
63 m.show(); 64 m.show();
64#endif 65#endif
65 a.exec(); 66 a.exec();
66 67
67 } 68 }
68 qDebug("KA: Bye! "); 69 qDebug("KA: Bye! ");
69} 70}
70 71
71/* 72/*
72#include <stdlib.h> 73#include <stdlib.h>
73 74
74#include <qstring.h> 75#include <qstring.h>
diff --git a/libkdepim/externalapphandler.cpp b/libkdepim/externalapphandler.cpp
index 35638b1..64caa7d 100644
--- a/libkdepim/externalapphandler.cpp
+++ b/libkdepim/externalapphandler.cpp
@@ -40,29 +40,265 @@ $Id$
40#include <kstaticdeleter.h> 40#include <kstaticdeleter.h>
41#include <kmessagebox.h> 41#include <kmessagebox.h>
42 42
43 43
44#include "externalapphandler.h" 44#include "externalapphandler.h"
45 45
46#include "kpimglobalprefs.h" 46#include "kpimglobalprefs.h"
47 47
48/*********************************************************************************
49 *
50 ********************************************************************************/
51
52
53QCopTransferItem::QCopTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
54 : _sourceMessage(sourceMessage), _targetChannel(targetChannel), _targetMessage(targetMessage)
55{
56 //sourceMessage passes later three parameters: sourceChannel, uid, param1
57 _sourceMessageParameters = "(QString,QString,QString)";
58}
59
60/*********************************************************************************/
61
62QCopTransferItem::QCopTransferItem()
63{
64}
65
66/*********************************************************************************/
67bool QCopTransferItem::sendMessageToTarget(const QString& uid, const QString& param1)
68{
69
70#ifndef DESKTOP_VERSION
71 //sourceMessage passes two parameters: sourceChannel, uid
72 QString sourceMessage = _sourceMessage + _sourceMessageParameters;
73
74 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _targetChannel.latin1(), sourceMessage.latin1());
75 qDebug("passing sourcechannel(%s), uid(%s), param1(%s) as parameter to QCopEnvelope", _sourceChannel.latin1(), uid.latin1(), param1.latin1());
76
77 QCopEnvelope e(_targetChannel.latin1(), sourceMessage.latin1());
78
79 e << _sourceChannel << uid << param1;
80
81 return true;
82
83#else
84 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
85 return false;
86#endif
87
88}
89
90
91/*********************************************************************************/
92void QCopTransferItem::setSourceChannel(const QString& sourceChannel)
93{
94
95 if (_sourceChannel.isEmpty())
96 _sourceChannel = sourceChannel;
97}
98
99
100/*********************************************************************************/
101bool QCopTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
102{
103/*US
104 // copied from old mail2
105 static int ii = 0;
106
107 // block second call
108 if ( ii < 2 ) {
109 ++ii;
110 if ( ii > 1 ) {
111 qDebug("qcop call blocked ");
112 return true;
113 }
114 }
115*/
116 qDebug("QCopTransferItem- QCOP message received: %s ", cmsg.data() );
117
118 //we are in the target and get a request from the source
119 if ( (_sourceMessage + _sourceMessageParameters) == cmsg.data())
120 {
121 QDataStream stream( data, IO_ReadOnly );
122
123
124 QString sourceChannel;
125 QString uid;
126 QString param1;
48 127
128 stream >> sourceChannel >> uid >> param1;
49 129
130 emit receivedMessageFromSource(sourceChannel, uid, param1);
50 131
132 return true;
133 }
134
135 return false;
136}
137
138
139/*********************************************************************************
140 *
141 ********************************************************************************/
142
143
144QCopMapTransferItem::QCopMapTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
145 : QCopTransferItem(sourceMessage, targetChannel,targetMessage)
146{
147 //targetMessage returns later two parameters: uid, and map<qstring,qstring>
148 _targetMessageParameters = "(QString,QMAP<QString,QString>)";
149}
150
151/*********************************************************************************/
152bool QCopMapTransferItem::sendMessageToSource(const QString& uid, const QMap<QString,QString>& nameEmailMap)
153{
154#ifndef DESKTOP_VERSION
155 //targetMessage passes two parameters: uid, map
156 QString targetMessage = _targetMessage + _targetMessageParameters;
157
158 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1());
159 qDebug("passing uid(%s) and map as parameter to QCopEnvelope", uid.latin1());
51 160
161 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1());
162 //US we need no names in the To field. The emailadresses are enough
163
164 e << uid << nameEmailMap;
165
166 return true;
167
168#else
169 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
170 return false;
171#endif
172
173}
174
175
176/*********************************************************************************/
177bool QCopMapTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
178{
179 bool res = QCopTransferItem::appMessage( cmsg, data );
180
181 if (res == false)
182 {
183 QDataStream stream( data, IO_ReadOnly );
184
185 qDebug("QCopMapTransferItem- QCOP message received: %s ", cmsg.data() );
186
187 //we are in the source and get an answer from the target
188 if ((_targetMessage + _targetMessageParameters) == cmsg.data())
189 {
190 QMap<QString,QString> adrMap;
191 QString uid;
192
193 stream >> uid >> adrMap;
194
195 emit receivedMessageFromTarget(uid, adrMap);
196
197
198 return true;
199 }
200 }
201
202 return false;
203}
204
205
206/*********************************************************************************
207 *
208 ********************************************************************************/
209
210
211QCopListTransferItem::QCopListTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage)
212 : QCopTransferItem(sourceMessage, targetChannel,targetMessage)
213{
214 //targetMessage returns later two parameters: uid, and map<qstring,qstring>
215 _targetMessageParameters = "(QString,QStringList,QStringList,QStringList)";
216}
217
218/*********************************************************************************/
219bool QCopListTransferItem::sendMessageToSource(const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
220{
221#ifndef DESKTOP_VERSION
222 //targetMessage passes two parameters: uid, map
223 QString targetMessage = _targetMessage + _targetMessageParameters;
224
225 qDebug("Using QCopEnvelope e(\"%s\",\"%s\")", _sourceChannel.latin1(), targetMessage.latin1());
226 qDebug("passing uid(%s) and list1, list2, list3 as parameter to QCopEnvelope", uid.latin1());
227
228 QCopEnvelope e(_sourceChannel.latin1(), targetMessage.latin1());
229 //US we need no names in the To field. The emailadresses are enough
230
231 e << uid << list1 << list2 << list3;
232
233 return true;
234
235#else
236 KMessageBox::sorry( 0, i18n( "This version does not support QCop." ) );
237 return false;
238#endif
239
240}
241
242
243/*********************************************************************************/
244bool QCopListTransferItem::appMessage( const QCString& cmsg, const QByteArray& data )
245{
246 bool res = QCopTransferItem::appMessage( cmsg, data );
247
248 if (res == false)
249 {
250 QDataStream stream( data, IO_ReadOnly );
251
252 qDebug("QCopListTransferItem- QCOP message received: %s ", cmsg.data() );
253
254 //we are in the source and get an answer from the target
255 if ((_targetMessage + _targetMessageParameters) == cmsg.data())
256 {
257 QStringList list1;
258 QStringList list2;
259 QStringList list3;
260 QString uid;
261
262 stream >> uid >> list1 >> list2 >> list3;
263
264 emit receivedMessageFromTarget(uid, list1, list2, list3);
265
266
267 return true;
268 }
269 }
270
271 return false;
272}
273
274
275
276/*********************************************************************************
277 *
278 ********************************************************************************/
52 279
53 280
54ExternalAppHandler *ExternalAppHandler::sInstance = 0; 281ExternalAppHandler *ExternalAppHandler::sInstance = 0;
55static KStaticDeleter<ExternalAppHandler> staticDeleter; 282static KStaticDeleter<ExternalAppHandler> staticDeleter;
56 283
57
58ExternalAppHandler::ExternalAppHandler() 284ExternalAppHandler::ExternalAppHandler()
59{ 285{
60 mDefaultItems.setAutoDelete(true); 286 mDefaultItems.setAutoDelete(true);
287
288 mNameEmailUidListFromKAPITransfer = new QCopListTransferItem("requestNameEmailUIDListFromKAPI", "QPE/Application/kapi", "receiveNameEmailUIDList");
289 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&)), this, SIGNAL (requestForNameEmailUidList(const QString&, const QString&, const QString&)));
290 connect(mNameEmailUidListFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)));
291
292//US mFindByEmailFromKAPITransfer = new QCopListTransferItem("requestFindByEmailFromKAPI", "QPE/Application/kapi", "receiveFindByEmailNameEmailUIDList");
293//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromSource(const QString&, const QString&, const QString&)), this, SIGNAL (requestForFindByEmail(const QString&, const QString&, const QString&)));
294//US connect(mFindByEmailFromKAPITransfer, SIGNAL (receivedMessageFromTarget(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SIGNAL (receivedFindByEmailEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)));
295
296
61} 297}
62 298
63ExternalAppHandler::~ExternalAppHandler() 299ExternalAppHandler::~ExternalAppHandler()
64{ 300{
65} 301}
66 302
67void ExternalAppHandler::loadConfig() 303void ExternalAppHandler::loadConfig()
68{ 304{
@@ -386,17 +622,18 @@ bool ExternalAppHandler::mailToOneContact( const QString& adressline )
386 QString line = adressline; 622 QString line = adressline;
387 623
388 int first = line.find( "<"); 624 int first = line.find( "<");
389 int last = line.find( ">"); 625 int last = line.find( ">");
390 QString name = line.left(first); 626 QString name = line.left(first);
391 QString emailadress = line.mid(first+1, last-first-1); 627 QString emailadress = line.mid(first+1, last-first-1);
392 628
393 //Subject can not be handled right now. 629 //Subject can not be handled right now.
394 mailToOneContact( name, emailadress ); 630 return mailToOneContact( name, emailadress );
631
395} 632}
396 633
397 634
398/************************************************************************** 635/**************************************************************************
399 * 636 *
400 **************************************************************************/ 637 **************************************************************************/
401 638
402//calls the phoneapplication with the number 639//calls the phoneapplication with the number
@@ -674,8 +911,49 @@ void ExternalAppHandler::passParameters(QCopEnvelope* e, const QString& paramete
674 (*e) << valmap; 911 (*e) << valmap;
675 912
676#endif 913#endif
677 914
678} 915}
679 916
680 917
681 918
919/**************************************************************************
920 *
921 **************************************************************************/
922
923void ExternalAppHandler::appMessage( const QCString& cmsg, const QByteArray& data )
924{
925 bool res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data );
926
927// if (!res)
928// res = mNameEmailUidListFromKAPITransfer->appMessage( cmsg, data );
929}
930
931
932
933bool ExternalAppHandler::requestNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& uid)
934{
935 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel);
936 return mNameEmailUidListFromKAPITransfer->sendMessageToTarget(uid, QString::null);
937}
938
939bool ExternalAppHandler::returnNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
940{
941 mNameEmailUidListFromKAPITransfer->setSourceChannel(sourceChannel);
942 return mNameEmailUidListFromKAPITransfer->sendMessageToSource(uid, list1, list2, list3);
943}
944
945bool ExternalAppHandler::requestFindByEmailFromKAPI(const QString& sourceChannel, const QString& uid, const QString& email)
946{
947 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel);
948 return mFindByEmailFromKAPITransfer->sendMessageToTarget(uid, email);
949}
950
951bool ExternalAppHandler::returnFindByEmailFromKAPI(const QString& sourceChannel, const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3)
952{
953 mFindByEmailFromKAPITransfer->setSourceChannel(sourceChannel);
954 return mFindByEmailFromKAPITransfer->sendMessageToSource(uid, list1, list2, list3);
955}
956
957
958
959
diff --git a/libkdepim/externalapphandler.h b/libkdepim/externalapphandler.h
index 3cf9e06..7c8de4e 100644
--- a/libkdepim/externalapphandler.h
+++ b/libkdepim/externalapphandler.h
@@ -26,22 +26,98 @@ Enhanced 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 30
31#ifndef EXTERNALAPPHANDLER_H 31#ifndef EXTERNALAPPHANDLER_H
32#define EXTERNALAPPHANDLER_H 32#define EXTERNALAPPHANDLER_H
33 33
34#include <qobject.h>
34#include <qlist.h> 35#include <qlist.h>
36#include <qmap.h>
35 37
36class QCopEnvelope; 38class QCopEnvelope;
37 39
38 40
39class ExternalAppHandler; 41class ExternalAppHandler;
42class QCopTransferItem : public QObject
43{
44 Q_OBJECT
45 public:
46 QCopTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage);
47 QCopTransferItem();
48
49 bool sendMessageToTarget(const QString& uid, const QString& param1);
50
51 void setSourceChannel(const QString& sourceChannel);
52
53 virtual bool appMessage( const QCString& msg, const QByteArray& data );
54
55
56 signals:
57 void receivedMessageFromSource(const QString& sourceChannel, const QString& uid, const QString& param1);
58
59
60 public:
61 QString _sourceChannel;
62 QString _sourceMessage;
63 QString _sourceMessageParameters;
64 QString _targetChannel;
65 QString _targetMessage;
66 QString _targetMessageParameters;
67
68};
69
70/*********************************************************************************
71 *
72 ********************************************************************************/
73
74class QCopMapTransferItem : public QCopTransferItem
75{
76 Q_OBJECT
77 public:
78 QCopMapTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage);
79
80 bool sendMessageToSource(const QString& uid, const QMap<QString,QString>& nameEmailMap);
81
82
83 virtual bool appMessage( const QCString& msg, const QByteArray& data );
84
85
86 signals:
87 void receivedMessageFromTarget(const QString& uid, const QMap<QString,QString>& nameEmailMap);
88
89};
90
91/*********************************************************************************
92 *
93 ********************************************************************************/
94
95class QCopListTransferItem : public QCopTransferItem
96{
97 Q_OBJECT
98 public:
99 QCopListTransferItem(const QString& sourceMessage, const QString& targetChannel, const QString& targetMessage);
100
101 bool sendMessageToSource(const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3);
102
103
104 virtual bool appMessage( const QCString& msg, const QByteArray& data );
105
106
107 signals:
108 void receivedMessageFromTarget(const QString& uid, const QStringList& list1, const QStringList& list2, const QStringList& list3);
109
110};
111
112/*********************************************************************************
113 *
114 ********************************************************************************/
115
40 116
41class DefaultAppItem 117class DefaultAppItem
42{ 118{
43 public: 119 public:
44 DefaultAppItem(int type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameters, const QString& message2, const QString& parameters2) 120 DefaultAppItem(int type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameters, const QString& message2, const QString& parameters2)
45 : _type(type), _id(id), _label(label), _channel(channel), _message(message), _parameters(parameters), _message2(message2), _parameters2(parameters2) 121 : _type(type), _id(id), _label(label), _channel(channel), _message(message), _parameters(parameters), _message2(message2), _parameters2(parameters2)
46 {} 122 {}
47 123
@@ -55,18 +131,23 @@ class DefaultAppItem
55 QString _channel; 131 QString _channel;
56 QString _message; 132 QString _message;
57 QString _parameters;// a list of parameters in stringrepresentation. Delimiter is ; 133 QString _parameters;// a list of parameters in stringrepresentation. Delimiter is ;
58 QString _message2; 134 QString _message2;
59 QString _parameters2; // a list of parameters in stringrepresentation. Delimiter is ; 135 QString _parameters2; // a list of parameters in stringrepresentation. Delimiter is ;
60 136
61}; 137};
62 138
63class ExternalAppHandler 139/*********************************************************************************
140 *
141 ********************************************************************************/
142
143class ExternalAppHandler : public QObject
64{ 144{
145 Q_OBJECT
65 public: 146 public:
66 virtual ~ExternalAppHandler(); 147 virtual ~ExternalAppHandler();
67 148
68 static ExternalAppHandler *instance(); 149 static ExternalAppHandler *instance();
69 150
70 enum Types { 151 enum Types {
71 EMAIL = 0, 152 EMAIL = 0,
72 PHONE = 1, 153 PHONE = 1,
@@ -107,39 +188,65 @@ class ExternalAppHandler
107 188
108 bool isEmailAppAvailable(); 189 bool isEmailAppAvailable();
109 bool isSMSAppAvailable(); 190 bool isSMSAppAvailable();
110 bool isPhoneAppAvailable(); 191 bool isPhoneAppAvailable();
111 bool isFaxAppAvailable(); 192 bool isFaxAppAvailable();
112 bool isPagerAppAvailable(); 193 bool isPagerAppAvailable();
113 194
114 195
196 //Call this method on the source when you want to select names from the addressbook by using QCop
197 bool requestNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& uid);
198 //Call this method on the target when you want to return the name/email map to the source (client).
199 bool returnNameEmailUidListFromKAPI(const QString& sourceChannel, const QString& uid, const QStringList& name, const QStringList& email, const QStringList& uid);
200
201 bool requestFindByEmailFromKAPI(const QString& sourceChannel, const QString& uid, const QString& email);
202 bool returnFindByEmailFromKAPI(const QString& sourceChannel, const QString& uid, const QStringList& name, const QStringList& email, const QStringList& uid);
203
115 204
116 //loadConfig clears the cache and checks again if the applications are available or not 205 //loadConfig clears the cache and checks again if the applications are available or not
117 void loadConfig(); 206 void loadConfig();
118 207
119 QList<DefaultAppItem> getAvailableDefaultItems(Types); 208 QList<DefaultAppItem> getAvailableDefaultItems(Types);
120 DefaultAppItem* getDefaultItem(Types, int); 209 DefaultAppItem* getDefaultItem(Types, int);
121 210
211 public slots:
212 void appMessage( const QCString& msg, const QByteArray& data );
213
214
215 signals:
216 // Emmitted when the target app receives a request from the source app
217 void requestForNameEmailUidList(const QString& sourceChannel, const QString& uid, const QString& param1);
218
219 // Emitted when the source app recieves a list of name/email pairs (=addresses) from another target app. Usually Ka/Pi
220 // The first parameter is a uniqueid. It can be used to identify the event
221 void receivedNameEmailUidListEvent(const QString& uid, const QStringList& nameList, const QStringList& emailList, const QStringList& uidList);
222
223 void requestFindByEmail(const QString& sourceChannel, const QString& uid, const QString& email);
224 void receivedFindBbyEmailEvent(const QString& uid, const QStringList& nameList, const QStringList& emailList, const QStringList& uidList);
225
122 226
123 private: 227 private:
124 ExternalAppHandler(); 228 ExternalAppHandler();
125 QList<DefaultAppItem> mDefaultItems; 229 QList<DefaultAppItem> mDefaultItems;
126 230
127 Availability mEmailAppAvailable; 231 Availability mEmailAppAvailable;
128 Availability mPhoneAppAvailable; 232 Availability mPhoneAppAvailable;
129 Availability mFaxAppAvailable; 233 Availability mFaxAppAvailable;
130 Availability mSMSAppAvailable; 234 Availability mSMSAppAvailable;
131 Availability mPagerAppAvailable; 235 Availability mPagerAppAvailable;
132 236
237 QCopListTransferItem* mNameEmailUidListFromKAPITransfer;
238 QCopListTransferItem* mFindByEmailFromKAPITransfer;
239
133 240
134 void addDefaultAppItem(Types type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameters, const QString& message2, const QString& parameters2); 241 void addDefaultAppItem(Types type, int id, const QString& label, const QString& channel, const QString& message, const QString& parameters, const QString& message2, const QString& parameters2);
135 242
136 QString& translateMessage(QString& message, const QString& param1, const QString& param2) const; 243 QString& translateMessage(QString& message, const QString& param1, const QString& param2) const;
137 void passParameters(QCopEnvelope* e, const QString& parameters, const QString& param1, const QString& param2) const; 244 void passParameters(QCopEnvelope* e, const QString& parameters, const QString& param1, const QString& param2) const;
138 245
139 246
140 static ExternalAppHandler *sInstance; 247 static ExternalAppHandler *sInstance;
141 248
142
143}; 249};
144 250
251
145#endif 252#endif