From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kontact/plugins/kmail/kmail_plugin.cpp | 221 +++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 kontact/plugins/kmail/kmail_plugin.cpp (limited to 'kontact/plugins/kmail/kmail_plugin.cpp') diff --git a/kontact/plugins/kmail/kmail_plugin.cpp b/kontact/plugins/kmail/kmail_plugin.cpp new file mode 100644 index 000000000..3d9f45bec --- /dev/null +++ b/kontact/plugins/kmail/kmail_plugin.cpp @@ -0,0 +1,221 @@ +/* + This file is part of Kontact. + Copyright (c) 2003 Kontact Developer + + 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 Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include + +#include "core.h" +#include "summarywidget.h" + +#include "kmail_plugin.h" + +using namespace KCal; + +typedef KGenericFactory KMailPluginFactory; +K_EXPORT_COMPONENT_FACTORY( libkontact_kmailplugin, + KMailPluginFactory( "kontact_kmailplugin" ) ) + +KMailPlugin::KMailPlugin(Kontact::Core *core, const char *, const QStringList& ) + : Kontact::Plugin( core, core, "kmail" ), + mStub( 0 ) +{ + setInstance( KMailPluginFactory::instance() ); + + insertNewAction( new KAction( i18n( "New Message..." ), "mail_new", + CTRL+SHIFT+Key_M, this, SLOT( slotNewMail() ), actionCollection(), + "new_mail" ) ); + + insertSyncAction( new KAction( i18n( "Synchronize Mail" ), "reload", + 0, this, SLOT( slotSyncFolders() ), actionCollection(), + "sync_mail" ) ); + + mUniqueAppWatcher = new Kontact::UniqueAppWatcher( + new Kontact::UniqueAppHandlerFactory(), this ); +} + +bool KMailPlugin::canDecodeDrag( QMimeSource *qms ) +{ + return ( ICalDrag::canDecode( qms ) || + VCalDrag::canDecode( qms ) || + KVCardDrag::canDecode( qms ) ); +} + +void KMailPlugin::processDropEvent( QDropEvent * de ) +{ + kdDebug() << k_funcinfo << endl; + CalendarLocal cal( QString::fromLatin1("UTC") ); + KABC::Addressee::List list; + + if ( VCalDrag::decode( de, &cal ) || ICalDrag::decode( de, &cal ) ) { + KTempFile tmp( locateLocal( "tmp", "incidences-" ), ".ics" ); + cal.save( tmp.name() ); + openComposer( KURL::fromPathOrURL( tmp.name() ) ); + } + else if ( KVCardDrag::decode( de, list ) ) { + KABC::Addressee::List::Iterator it; + QStringList to; + for ( it = list.begin(); it != list.end(); ++it ) { + to.append( ( *it ).fullEmail() ); + } + openComposer( to.join(", ") ); + } + +} + +void KMailPlugin::openComposer( const KURL& attach ) +{ + (void) part(); // ensure part is loaded + Q_ASSERT( mStub ); + if ( mStub ) { + if ( attach.isValid() ) + mStub->newMessage( "", "", "", false, true, KURL(), attach ); + else + mStub->newMessage( "", "", "", false, true, KURL(), KURL() ); + } +} + +void KMailPlugin::openComposer( const QString& to ) +{ + (void) part(); // ensure part is loaded + Q_ASSERT( mStub ); + if ( mStub ) { + mStub->newMessage( to, "", "", false, true, KURL(), KURL() ); + } +} + +void KMailPlugin::slotNewMail() +{ + openComposer( QString::null ); +} + +void KMailPlugin::slotSyncFolders() +{ + DCOPRef ref( "kmail", "KMailIface" ); + ref.send( "checkMail" ); +} + +KMailPlugin::~KMailPlugin() +{ +} + +bool KMailPlugin::createDCOPInterface( const QString& serviceType ) +{ + if ( serviceType == "DCOP/ResourceBackend/IMAP" ) { + if ( part() ) + return true; + } + + return false; +} + +QString KMailPlugin::tipFile() const +{ + QString file = ::locate("data", "kmail/tips"); + return file; +} + +KParts::ReadOnlyPart* KMailPlugin::createPart() +{ + KParts::ReadOnlyPart *part = loadPart(); + if ( !part ) return 0; + + mStub = new KMailIface_stub( dcopClient(), "kmail", "KMailIface" ); + + return part; +} + +QStringList KMailPlugin::invisibleToolbarActions() const +{ + return QStringList( "new_message" ); +} + +bool KMailPlugin::isRunningStandalone() +{ + return mUniqueAppWatcher->isRunningStandalone(); +} + +Kontact::Summary *KMailPlugin::createSummaryWidget( QWidget *parent ) +{ + return new SummaryWidget( this, parent ); +} + +//// + +#include "../../../kmail/kmail_options.h" +void KMailUniqueAppHandler::loadCommandLineOptions() +{ + KCmdLineArgs::addCmdLineOptions( kmail_options ); +} + +int KMailUniqueAppHandler::newInstance() +{ + // Ensure part is loaded + (void)plugin()->part(); + DCOPRef kmail( "kmail", "KMailIface" ); + DCOPReply reply = kmail.call( "handleCommandLine", false ); + if ( reply.isValid() ) { + bool handled = reply; + //kdDebug(5602) << k_funcinfo << "handled=" << handled << endl; + if ( !handled ) // no args -> simply bring kmail plugin to front + return Kontact::UniqueAppHandler::newInstance(); + } + return 0; +} + +bool KMailPlugin::queryClose() const { + KMailIface_stub stub( kapp->dcopClient(), "kmail", "KMailIface" ); + bool canClose=stub.canQueryClose(); + return canClose; +} + +void KMailPlugin::loadProfile( const QString& profileDirectory ) { + DCOPRef ref( "kmail", "KMailIface" ); + ref.send( "loadProfile", profileDirectory ); +} + +void KMailPlugin::saveToProfile( const QString& profileDirectory ) { + DCOPRef ref( "kmail", "KMailIface" ); + ref.send( "saveToProfile", profileDirectory ); +} + +#include "kmail_plugin.moc" -- cgit v1.2.1