diff options
author | Don Sanders <don.sanders@nokia.com> | 2011-03-21 15:21:16 +1000 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2011-03-21 15:21:16 +1000 |
commit | 185d565d756abd706faa75e5229cb2480019256e (patch) | |
tree | 20a885e8ba0e57bdd84da20e2d8e046f7a3c31f0 | |
parent | 338cf165f6442a8a74004a128a8479b47db93159 (diff) | |
parent | 894d0deef39f6c78028833386af2950c8367f30b (diff) |
Merge commit 'refs/merge-requests/11' of git://gitorious.org/qt-labs/messagingframework into merge-requests/11
-rw-r--r-- | src/libraries/qmfclient/qmailmessage.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/libraries/qmfclient/qmailmessage.cpp b/src/libraries/qmfclient/qmailmessage.cpp index 5bf56f1e..83ea8c5a 100644 --- a/src/libraries/qmfclient/qmailmessage.cpp +++ b/src/libraries/qmfclient/qmailmessage.cpp @@ -1595,8 +1595,14 @@ void QMailMessageHeaderFieldPrivate::setParameter(const QByteArray& name, const QByteArray input(value); do { - pieces.append(input.left(maxInputLength)); - input = input.mid(maxInputLength); + int splitPoint = maxInputLength; + if (encoded && input.length() > maxInputLength) { + int percentPosition = input.indexOf("%", maxInputLength - 2); + if (percentPosition != -1 && percentPosition < maxInputLength) + splitPoint = percentPosition; + } + pieces.append(input.left(splitPoint)); + input = input.mid(splitPoint); } while (input.length()); if (it == end) { @@ -1605,7 +1611,7 @@ void QMailMessageHeaderFieldPrivate::setParameter(const QByteArray& name, const while (pieces.count() > 0) { QByteArray id(param); id.append('*').append(QByteArray::number(n)); - if (encoded && (n == 0)) + if (encoded) id.append('*'); _parameters.append(qMakePair(id, pieces.takeFirst())); @@ -5486,7 +5492,7 @@ QMailMessageContentDisposition QMailMessagePart::contentDisposition() const */ void QMailMessagePart::setContentDisposition(const QMailMessageContentDisposition &disposition) { - setHeaderField("Content-Disposition", disposition.toString()); + setHeaderField("Content-Disposition", disposition.toString(false, false)); } /*! @@ -5534,10 +5540,10 @@ QMailMessagePart::Location QMailMessagePart::location() const */ QString QMailMessagePart::displayName() const { - QString id(decodeWordSequence(contentType().name())); + QString id(contentType().isParameterEncoded("name")?decodeParameter(contentType().name()):decodeWordSequence(contentType().name())); if (id.isEmpty()) - id = decodeWordSequence(contentDisposition().filename()); + id = contentDisposition().isParameterEncoded("filename")?decodeParameter(contentDisposition().filename()):decodeWordSequence(contentDisposition().filename()); if (id.isEmpty()) id = contentID(); |