/* This file is part of Kontact. Copyright (c) 2001 Matthias Hoelzer-Kluepfel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. As a special exception, permission is given to link this program with any edition of TQt, and distribute the resulting executable, without including the source code for TQt in the source distribution. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kmailIface_stub.h" #include #include "core.h" #include "plugin.h" #include "kaddressbook_plugin.h" typedef KGenericFactory< KAddressbookPlugin, Kontact::Core > KAddressbookPluginFactory; K_EXPORT_COMPONENT_FACTORY( libkontact_kaddressbookplugin, KAddressbookPluginFactory( "kontact_kaddressbookplugin" ) ) KAddressbookPlugin::KAddressbookPlugin( Kontact::Core *core, const char *, const TQStringList& ) : Kontact::Plugin( core, TQT_TQOBJECT(core), "kaddressbook" ), mStub( 0 ) { setInstance( KAddressbookPluginFactory::instance() ); insertNewAction( new TDEAction( i18n( "New Contact..." ), "identity", CTRL+SHIFT+Key_C, this, TQT_SLOT( slotNewContact() ), actionCollection(), "new_contact" ) ); insertNewAction( new TDEAction( i18n( "&New Distribution List..." ), "kontact_contacts", 0, this, TQT_SLOT( slotNewDistributionList() ), actionCollection(), "new_distributionlist" ) ); insertSyncAction( new TDEAction( i18n( "Synchronize Contacts" ), "reload", 0, this, TQT_SLOT( slotSyncContacts() ), actionCollection(), "kaddressbook_sync" ) ); mUniqueAppWatcher = new Kontact::UniqueAppWatcher( new Kontact::UniqueAppHandlerFactory(), this ); } KAddressbookPlugin::~KAddressbookPlugin() { } KParts::ReadOnlyPart* KAddressbookPlugin::createPart() { KParts::ReadOnlyPart * part = loadPart(); if ( !part ) return 0; // Create the stub that allows us to talk to the part mStub = new KAddressBookIface_stub( dcopClient(), "kaddressbook", "KAddressBookIface" ); return part; } TQStringList KAddressbookPlugin::configModules() const { TQStringList modules; modules << "PIM/kabconfig.desktop" << "PIM/kabldapconfig.desktop"; return modules; } TQStringList KAddressbookPlugin::invisibleToolbarActions() const { return TQStringList( "file_new_contact" ); } KAddressBookIface_stub *KAddressbookPlugin::interface() { if ( !mStub ) { part(); } Q_ASSERT( mStub ); return mStub; } void KAddressbookPlugin::slotNewContact() { interface()->newContact(); } void KAddressbookPlugin::slotNewDistributionList() { interface()->newDistributionList(); } void KAddressbookPlugin::slotSyncContacts() { DCOPRef ref( "kaddressbook", "KAddressBookIface" ); ref.send( "syncAllResources" ); } bool KAddressbookPlugin::createDCOPInterface( const TQString& serviceType ) { if ( serviceType == "DCOP/AddressBook" ) { Q_ASSERT( mStub ); return true; } return false; } void KAddressbookPlugin::configUpdated() { } bool KAddressbookPlugin::isRunningStandalone() { return mUniqueAppWatcher->isRunningStandalone(); } bool KAddressbookPlugin::canDecodeDrag( TQMimeSource *mimeSource ) { return KPIM::MailListDrag::canDecode( mimeSource ); } #include void KAddressbookPlugin::processDropEvent( TQDropEvent *event ) { KPIM::MailList mails; if ( KPIM::MailListDrag::decode( event, mails ) ) { if ( mails.count() != 1 ) { KMessageBox::sorry( core(), i18n( "Drops of multiple mails are not supported." ) ); } else { KPIM::MailSummary mail = mails.first(); KMailIface_stub kmailIface( "kmail", "KMailIface" ); TQString sFrom = kmailIface.getFrom( mail.serialNumber() ); if ( !sFrom.isEmpty() ) { KAddrBookExternal::addEmail( sFrom, core() ); } } return; } KMessageBox::sorry( core(), i18n( "Cannot handle drop events of type '%1'." ) .arg( event->format() ) ); } void KAddressbookPlugin::loadProfile( const TQString& directory ) { DCOPRef ref( "kaddressbook", "KAddressBookIface" ); ref.send( "loadProfile", directory ); } void KAddressbookPlugin::saveToProfile( const TQString& directory ) const { DCOPRef ref( "kaddressbook", "KAddressBookIface" ); ref.send( "saveToProfile", directory ); } //// #include "../../../kaddressbook/kaddressbook_options.h" void KABUniqueAppHandler::loadCommandLineOptions() { TDECmdLineArgs::addCmdLineOptions( kaddressbook_options ); } int KABUniqueAppHandler::newInstance() { kdDebug(5602) << k_funcinfo << endl; // Ensure part is loaded (void)plugin()->part(); DCOPRef kAB( "kaddressbook", "KAddressBookIface" ); DCOPReply reply = kAB.call( "handleCommandLine" ); if ( reply.isValid() ) { bool handled = reply; kdDebug(5602) << k_funcinfo << "handled=" << handled << endl; if ( !handled ) // no args -> simply bring kaddressbook plugin to front return Kontact::UniqueAppHandler::newInstance(); } return 0; } #include "kaddressbook_plugin.moc" // vim: sw=2 sts=2 tw=80 et