From 4a04174c442c95c79663e1f71cc90d24d0d03583 Mon Sep 17 00:00:00 2001 From: George Staikos Date: Tue, 1 Mar 2005 21:20:33 +0000 Subject: [PATCH] Implement drag and drop of email to KDesktop, etc. FEATURE: 8904 COOKIES: staikos@kde.org X-Thanks-To: faure@kde.org, adam@kde.org svn path=/trunk/kdepim/; revision=394196 --- Makefile.am | 2 +- kmheaders.cpp | 4 ++- textsource.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ textsource.h | 46 ++++++++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 textsource.cpp create mode 100644 textsource.h diff --git a/Makefile.am b/Makefile.am index 0a70068e2..b9f0d4f85 100644 --- a/Makefile.am +++ b/Makefile.am @@ -117,7 +117,7 @@ libkmailprivate_la_SOURCES = kmmessage.cpp kmmainwin.cpp configuredialog.cpp \ recipientspicker.cpp kwindowpositioner.cpp \ distributionlistdialog.cpp expirypropertiesdialog.cpp \ mailinglistpropertiesdialog.cpp newfolderdialog.cpp \ - accountwizard.cpp + accountwizard.cpp textsource.cpp kmail_SOURCES = main.cpp diff --git a/kmheaders.cpp b/kmheaders.cpp index 8a10f6766..16896bbff 100644 --- a/kmheaders.cpp +++ b/kmheaders.cpp @@ -54,6 +54,8 @@ using namespace KPIM; #include #include +#include "textsource.h" + QPixmap* KMHeaders::pixNew = 0; QPixmap* KMHeaders::pixUns = 0; QPixmap* KMHeaders::pixDel = 0; @@ -2171,7 +2173,7 @@ void KMHeaders::contentsMouseMoveEvent( QMouseEvent* e ) mailList.append( mailSummary ); ++count; } - MailListDrag *d = new MailListDrag( mailList, viewport() ); + MailListDrag *d = new MailListDrag( mailList, viewport(), new KMTextSource ); // Set pixmap QPixmap pixmap; diff --git a/textsource.cpp b/textsource.cpp new file mode 100644 index 000000000..09a16b56c --- /dev/null +++ b/textsource.cpp @@ -0,0 +1,67 @@ +/* + This file is part of KMail. + + Copyright (c) 2005 George Staikos + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#include "textsource.h" +#include "kmkernel.h" +#include "kmmessage.h" +#include "kmmsgbase.h" +#include "kmmsgdict.h" +#include "kmfolder.h" +#include "kmfolderindex.h" + +KMTextSource::KMTextSource() : MailTextSource() { +} + + +KMTextSource::~KMTextSource() { +} + + +QString KMTextSource::text(Q_UINT32 serialNumber) const { + QString rc; + KMFolder *folder = 0; + int idx; + kmkernel->msgDict()->getLocation(serialNumber, &folder, &idx); + if (folder) { + KMMsgBase *msgBase = folder->getMsgBase(idx); + if (msgBase) { + KMMessage *msg = msgBase->storage()->readTemporaryMsg(idx); + if (msg) { + rc = msg->asString(); + delete msg; + } + } + } + + return rc; +} + diff --git a/textsource.h b/textsource.h new file mode 100644 index 000000000..de0eca848 --- /dev/null +++ b/textsource.h @@ -0,0 +1,46 @@ +/* + This file is part of KMail. + + Copyright (c) 2005 George Staikos + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#ifndef _TEXTSOURCE_H +#define _TEXTSOURCE_H + +#include + +class KMTextSource : public KPIM::MailTextSource { +public: + KMTextSource(); + ~KMTextSource(); + + QString text(Q_UINT32 serialNumber) const; +}; + +#endif