[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/kdepim/enterprise/kdepim/libkdepim
From: Allen Winter <winter () kde ! org>
Date: 2010-10-14 21:31:23
Message-ID: 20101014213123.89E1FAC895 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1186005 by winterz:
support suggested filenames from the mail subject
part of the fix for kolab/issue3689
MERGE: trunk (but the implementation will be totally different, so block this)
M +30 -43 maillistdrag.cpp
M +4 -5 maillistdrag.h
--- branches/kdepim/enterprise/kdepim/libkdepim/maillistdrag.cpp #1186004:1186005
@@ -78,8 +78,8 @@
mDate = date;
}
-MailListDrag::MailListDrag( MailList mailList, QWidget * parent, MailTextSource *src \
)
- : QStoredDrag( MailListDrag::format(), parent ), _src(src)
+MailListDrag::MailListDrag( const MailList& mailList, QWidget * parent, \
MailTextSource *src ) + : QDragObject( parent ), _src(src)
{
setMailList( mailList );
}
@@ -127,9 +127,9 @@
return s;
}
-QDataStream& operator<< ( QDataStream &s, MailList &mailList )
+QDataStream& operator<< ( QDataStream &s, const MailList &mailList )
{
- MailList::iterator it;
+ MailList::const_iterator it;
for (it = mailList.begin(); it != mailList.end(); ++it) {
MailSummary mailDrag = *it;
s << mailDrag;
@@ -188,72 +188,59 @@
return FALSE;
}
-void MailListDrag::setMailList( MailList mailList )
+void MailListDrag::setMailList( const MailList& mailList )
{
- QByteArray array;
- QBuffer buffer( array );
- buffer.open( IO_WriteOnly);
- QDataStream stream( array, IO_WriteOnly );
- stream << mailList;
- buffer.close();
- setEncodedData( array );
+ _mailList = mailList;
}
const char *MailListDrag::format(int i) const
{
- if (_src) {
if (i == 0) {
return "message/rfc822";
+ } else if (i == 1) {
+ return format();
+ } else if (i == 2) {
+ return "application/x-kde-suggestedfilename"; // issue3689
} else {
- return QStoredDrag::format(i - 1);
+ return 0;
}
}
- return QStoredDrag::format(i);
-}
-
-bool MailListDrag::provides(const char *mimeType) const
-{
- if (_src && QCString(mimeType) == "message/rfc822") {
- return true;
- }
-
- return QStoredDrag::provides(mimeType);
-}
-
QByteArray MailListDrag::encodedData(const char *mimeType) const
{
- if (QCString(mimeType) != "message/rfc822") {
- return QStoredDrag::encodedData(mimeType);
- }
+ QByteArray array;
- QByteArray rc;
- if (_src) {
- MailList ml;
- QByteArray enc = QStoredDrag::encodedData(format());
- decode(enc, ml);
-
+ if (!qstricmp(mimeType, format())) {
+ QBuffer buffer( array );
+ buffer.open( IO_WriteOnly);
+ QDataStream stream( array, IO_WriteOnly );
+ stream << _mailList;
+ buffer.close();
+ } else if (!qstricmp(mimeType, "application/x-kde-suggestedfilename")) {
+ if (!_mailList.isEmpty()) {
+ MailSummary firstMail = _mailList.first();
+ array = firstMail.subject().utf8();
+ }
+ } else if (!qstricmp(mimeType, "message/rfc822")) {
KProgressDialog *dlg = new KProgressDialog(0, 0, QString::null, \
i18n("Retrieving and storing messages..."), true); dlg->setAllowCancel(true);
- dlg->progressBar()->setTotalSteps(ml.count());
+ dlg->progressBar()->setTotalSteps(_mailList.count());
int i = 0;
dlg->progressBar()->setValue(i);
dlg->show();
- QTextStream *ts = new QTextStream(rc, IO_WriteOnly);
- for (MailList::ConstIterator it = ml.begin(); it != ml.end(); ++it) {
+ QTextStream ts(array, IO_WriteOnly);
+ for (MailList::ConstIterator it = _mailList.begin(); it != _mailList.end(); \
++it) { MailSummary mailDrag = *it;
- *ts << _src->text(mailDrag.serialNumber());
+ ts << _src->text(mailDrag.serialNumber());
if (dlg->wasCancelled()) {
break;
}
dlg->progressBar()->setValue(++i);
- kapp->eventLoop()->processEvents(QEventLoop::ExcludeSocketNotifiers);
+ qApp->eventLoop()->processEvents(QEventLoop::ExcludeSocketNotifiers);
}
delete dlg;
- delete ts;
}
- return rc;
+ return array;
}
-
--- branches/kdepim/enterprise/kdepim/libkdepim/maillistdrag.h #1186004:1186005
@@ -92,21 +92,19 @@
};
// Drag and drop object for mails
-class KDE_EXPORT MailListDrag : public QStoredDrag
+class KDE_EXPORT MailListDrag : public QDragObject
{
public:
// Takes ownership of "src" and deletes it when done
- MailListDrag( MailList, QWidget * parent = 0, MailTextSource *src = 0 );
+ MailListDrag( const MailList& mails, QWidget * parent, MailTextSource *src );
~MailListDrag();
const char *format(int i) const;
- bool provides(const char *mimeType) const;
-
QByteArray encodedData(const char *) const;
/* Reset the list of mail summaries */
- void setMailList( MailList );
+ void setMailList( const MailList& mails );
/* The format for this drag - "x-kmail-drag/message-list" */
static const char* format();
@@ -129,6 +127,7 @@
private:
MailTextSource *_src;
+ MailList _mailList;
};
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic