CVS commit by sprakes: BUG: 77419 Folder identities not used when composer opened from Kontact's new mail action. M +7 -1 kmail/kmailIface.h 1.39 M +36 -11 kmail/kmkernel.cpp 1.332 M +8 -1 kmail/kmkernel.h 1.135 M +3 -3 kontact/plugins/kmail/kmail_plugin.cpp 1.50 --- kdepim/kmail/kmailIface.h #1.38:1.39 @@ -113,5 +113,11 @@ k_dcop_signals: k_dcop_hidden: /** DCOP call which is used by the Kontact plugin to create a new message. */ - virtual DCOPRef newMessage() = 0; + virtual DCOPRef newMessage(const QString &to, + const QString &cc, + const QString& bcc, + bool hidden, + bool useFolderId, + const KURL &messageFile, + const KURL &attachURL) = 0; virtual bool showMail( Q_UINT32 serialNumber, QString messageId ) = 0; --- kdepim/kmail/kmkernel.cpp #1.331:1.332 @@ -538,23 +538,39 @@ DCOPRef KMKernel::openComposer(const QSt } -DCOPRef KMKernel::newMessage() +DCOPRef KMKernel::newMessage(const QString &to, + const QString &cc, + const QString &bcc, + bool hidden, + bool useFolderId, + const KURL &messageFile, + const KURL &attachURL) { - KMFolder *folder = 0; - KMMainWidget *widget = getKMMainWidget(); - if ( widget && widget->folderTree() ) - folder = widget->folderTree()->currentFolder(); - - // the following code is basically the same as in KMMainWidget::slotCompose() KMComposeWin *win; KMMessage *msg = new KMMessage; - if ( folder ) { - msg->initHeader( folder->identity() ); - win = new KMComposeWin( msg, folder->identity() ); + + if ( useFolderId ) { + //create message with required folder identity + KMFolder *folder = currentFolder(); + uint id = folder ? folder->identity() : 0; + msg->initHeader( id ); + win = new KMComposeWin( msg, id ); } else { msg->initHeader(); win = new KMComposeWin( msg ); } - win->show(); + msg->setCharset("utf-8"); + //set basic headers + if (!to.isEmpty()) msg->setTo(to); + if (!cc.isEmpty()) msg->setCc(cc); + if (!bcc.isEmpty()) msg->setBcc(bcc); + //Add the attachment if we have one + if(!attachURL.isEmpty() && attachURL.isValid()) { + win->addAttach(attachURL); + } + //only show window when required + if(!hidden) { + win->show(); + } return DCOPRef( win ); } @@ -2055,3 +2071,12 @@ QValueList< QGuardedPtr > KMKe } +KMFolder *KMKernel::currentFolder() { + KMMainWidget *widget = getKMMainWidget(); + KMFolder *folder = 0; + if ( widget && widget->folderTree() ) { + folder = widget->folderTree()->currentFolder(); + } + return folder; +} + #include "kmkernel.moc" --- kdepim/kmail/kmkernel.h #1.134:1.135 @@ -128,5 +128,11 @@ public: /** DCOP call used by the Kontact plugin to create a new message. */ - DCOPRef newMessage(); + DCOPRef newMessage(const QString &to, + const QString &cc, + const QString &bcc, + bool hidden, + bool useFolderId, + const KURL &messageFile, + const KURL &attachURL); int sendCertificate( const QString& to, const QByteArray& certData ); @@ -333,4 +339,5 @@ signals: private: void openReader( bool onlyCheck ); + KMFolder *currentFolder(); KMFolder *the_inboxFolder; --- kdepim/kontact/plugins/kmail/kmail_plugin.cpp #1.49:1.50 @@ -105,7 +105,7 @@ void KMailPlugin::openComposer( const KU if ( mStub ) { if ( attach.isValid() ) - mStub->openComposer( "", "", "", "", "", false, KURL(), attach ); + mStub->newMessage( "", "", "", false, true, KURL(), attach ); else - mStub->newMessage(); + mStub->newMessage( "", "", "", false, true, KURL(), KURL() ); } } @@ -116,5 +116,5 @@ void KMailPlugin::openComposer( const QS Q_ASSERT( mStub ); if ( mStub ) { - mStub->openComposer( to, "", "", "", "", 0 ); + mStub->newMessage( to, "", "", false, true, KURL(), KURL() ); } }