From 3ca71dc0643a59f4f3f2aa9943663e064fe2fb32 Mon Sep 17 00:00:00 2001 From: Paul Sprakes Date: Sat, 16 Apr 2005 10:32:13 +0000 Subject: [PATCH] BUG: 77419 Folder identities not used when composer opened from Kontact's new mail action. svn path=/trunk/kdepim/; revision=405867 --- kmailIface.h | 8 +++++++- kmkernel.cpp | 47 ++++++++++++++++++++++++++++++++++++----------- kmkernel.h | 9 ++++++++- 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/kmailIface.h b/kmailIface.h index da32ca106..c0790b0b7 100644 --- a/kmailIface.h +++ b/kmailIface.h @@ -112,7 +112,13 @@ 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; /** diff --git a/kmkernel.cpp b/kmkernel.cpp index 292691f2f..45944697b 100644 --- a/kmkernel.cpp +++ b/kmkernel.cpp @@ -537,25 +537,41 @@ DCOPRef KMKernel::openComposer(const QString &to, const QString &cc, return DCOPRef(cWin); } -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 ); } @@ -2054,4 +2070,13 @@ QValueList< QGuardedPtr > KMKernel::allFolders() return folders; } +KMFolder *KMKernel::currentFolder() { + KMMainWidget *widget = getKMMainWidget(); + KMFolder *folder = 0; + if ( widget && widget->folderTree() ) { + folder = widget->folderTree()->currentFolder(); + } + return folder; +} + #include "kmkernel.moc" diff --git a/kmkernel.h b/kmkernel.h index 84ed67575..78feceb33 100644 --- a/kmkernel.h +++ b/kmkernel.h @@ -127,7 +127,13 @@ public: const QString &body,bool hidden); /** 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 ); @@ -332,6 +338,7 @@ signals: private: void openReader( bool onlyCheck ); + KMFolder *currentFolder(); KMFolder *the_inboxFolder; KMFolder *the_outboxFolder;