korganizer
urihandler.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "urihandler.h"
00026
00027 #ifndef KORG_NODCOP
00028 #include <dcopclient.h>
00029 #include "kmailIface_stub.h"
00030 #endif
00031
00032 #include <kiconloader.h>
00033 #include <krun.h>
00034 #include <kapplication.h>
00035 #include <kprocess.h>
00036 #include <kdebug.h>
00037
00038 bool UriHandler::process( const QString &uri )
00039 {
00040 kdDebug(5850) << "UriHandler::process(): " << uri << endl;
00041
00042 #ifndef KORG_NODCOP
00043 if ( uri.startsWith( "kmail:" ) ) {
00044
00045 kapp->startServiceByDesktopPath("kmail");
00046
00047
00048 int colon = uri.find( ':' );
00049
00050 QString serialNumberStr = uri.mid( colon + 1 );
00051 serialNumberStr = serialNumberStr.left( serialNumberStr.find( '/' ) );
00052
00053 KMailIface_stub kmailIface( "kmail", "KMailIface" );
00054 kmailIface.showMail( serialNumberStr.toUInt(), QString() );
00055 return true;
00056 } else if ( uri.startsWith( "mailto:" ) ) {
00057 KApplication::kApplication()->invokeMailer( uri.mid(7), QString::null );
00058 return true;
00059 } else if ( uri.startsWith( "uid:" ) ) {
00060 DCOPClient *client = KApplication::kApplication()->dcopClient();
00061 const QByteArray noParamData;
00062 const QByteArray paramData;
00063 QByteArray replyData;
00064 QCString replyTypeStr;
00065 bool foundAbbrowser = client->call( "kaddressbook", "KAddressBookIface",
00066 "interfaces()", noParamData,
00067 replyTypeStr, replyData );
00068 if ( foundAbbrowser ) {
00069
00070 #if KDE_IS_VERSION( 3, 2, 90 )
00071 kapp->updateRemoteUserTimestamp("kaddressbook");
00072 #endif
00073 DCOPRef kaddressbook( "kaddressbook", "KAddressBookIface" );
00074 kaddressbook.send( "showContactEditor", uri.mid( 6 ) );
00075 return true;
00076 } else {
00077
00078
00079
00080
00081 QString iconPath = KGlobal::iconLoader()->iconPath( "go", KIcon::Small );
00082 QString tmpStr = "kaddressbook --editor-only --uid ";
00083 tmpStr += KProcess::quote( uri.mid( 6 ) );
00084 KRun::runCommand( tmpStr, "KAddressBook", iconPath );
00085 return true;
00086 }
00087 }
00088 else {
00089 new KRun(KURL( uri ));
00090 }
00091 #endif
00092
00093 return false;
00094 }
|