Merged revisions 1055350 via svnmerge from 
svn+ssh://tmcguire@svn.kde.org/home/kde/branches/kdepim/enterprise4/kdepim

................
  r1055350 | winterz | 2009-11-27 22:17:25 +0100 (Fri, 27 Nov 2009) | 10 lines
  
  Merged revisions 1055258 via svnmerge from 
  https://svn.kde.org/home/kde/branches/kdepim/enterprise/kdepim
  
  ........
    r1055258 | tmcguire | 2009-11-27 13:02:48 -0500 (Fri, 27 Nov 2009) | 3 lines
    
    Extract the code that RFC-2231-encodes a string with an autodetected charset,
    it was duplicated in a number of places.
  ........
................

svn path=/trunk/KDE/kdepim/; revision=1058349
wilder-work
Thomas McGuire 17 years ago
parent ca20826454
commit a388cc47c6
  1. 26
      kmmessage.cpp
  2. 10
      kmmsgbase.cpp
  3. 9
      kmmsgbase.h
  4. 5
      kmmsgpartdlg.cpp
  5. 9
      messagecomposer.cpp

@ -2785,9 +2785,7 @@ DwBodyPart* KMMessage::createDWBodyPart(const KMMessagePart* aPart)
QByteArray contDesc = aPart->contentDescriptionEncoded();
QByteArray contDisp = aPart->contentDisposition();
QByteArray contID = aPart->contentId();
QByteArray encoding = autoDetectCharset(charset, s->prefCharsets, aPart->name());
if (encoding.isEmpty()) encoding = "utf-8";
QByteArray name = KMMsgBase::encodeRFC2231String(aPart->name(), encoding);
QByteArray name = KMMsgBase::encodeRFC2231StringAutoDetectCharset( aPart->name(), charset );
bool RFC2231encoded = aPart->name() != QString(name);
QByteArray paramAttr = aPart->parameterAttribute();
@ -2862,24 +2860,18 @@ DwBodyPart* KMMessage::createDWBodyPart(const KMMessagePart* aPart)
}
}
if (!paramAttr.isEmpty())
{
QByteArray encoding = autoDetectCharset(charset, s->prefCharsets,
aPart->parameterValue());
if (encoding.isEmpty()) encoding = "utf-8";
if ( !paramAttr.isEmpty() ) {
QByteArray paramValue;
paramValue = KMMsgBase::encodeRFC2231String(aPart->parameterValue(),
encoding);
paramValue = KMMsgBase::encodeRFC2231StringAutoDetectCharset( aPart->parameterValue(), charset );
DwParameter *param = new DwParameter;
if (aPart->parameterValue() != QString(paramValue))
{
param->SetAttribute((paramAttr + '*').data());
param->SetValue(paramValue.data(),true);
if ( aPart->parameterValue() != QString( paramValue ) ) {
param->SetAttribute( ( paramAttr + '*' ).data() );
param->SetValue( paramValue.data(), true );
} else {
param->SetAttribute(paramAttr.data());
param->SetValue(paramValue.data());
param->SetAttribute( paramAttr.data() );
param->SetValue( paramValue.data() );
}
ct.AddParameter(param);
ct.AddParameter( param );
}
if (!cte.isEmpty())

@ -690,6 +690,16 @@ QByteArray KMMsgBase::encodeRFC2231String( const QString& _str,
return result;
}
//-----------------------------------------------------------------------------
QByteArray KMMsgBase::encodeRFC2231StringAutoDetectCharset( const QString &str,
const QByteArray &defaultCharset )
{
QByteArray encoding = KMMsgBase::autoDetectCharset( defaultCharset,
KMMessage::preferredCharsets(), str );
if ( encoding.isEmpty() )
encoding = "utf-8";
return KMMsgBase::encodeRFC2231String( str, encoding );
}
//-----------------------------------------------------------------------------
QString KMMsgBase::decodeRFC2231String(const QByteArray& _str)

@ -125,7 +125,7 @@ public:
virtual QString tagString( void ) const = 0;
/**Get a pointer to the tag label list*/
virtual KMMessageTagList *tagList( void ) const = 0;
/**Split @p aString at commas and set the tag list to the resulting
/**Split @p aString at commas and set the tag list to the resulting
list and set dirty*/
virtual void setTagList( const QString &aString );
/**Set the tag list to @p aTagList and set dirty*/
@ -304,6 +304,13 @@ public:
static QByteArray encodeRFC2231String( const QString &aStr,
const QByteArray &charset );
/**
* Just like encodeRFC2231String, only that the encoding is auto-detected.
* @param defaultCharset If given, this will be the prefered charset
*/
static QByteArray encodeRFC2231StringAutoDetectCharset( const QString &str,
const QByteArray &defaultCharset = "" );
/** Decode given string as described in RFC2231 */
static QString decodeRFC2231String( const QByteArray &aStr );

@ -399,10 +399,7 @@ void KMMsgPartDialogCompat::applyChanges()
QString name = fileName();
if ( !name.isEmpty() || !mMsgPart->name().isEmpty()) {
mMsgPart->setName( name );
QByteArray encoding = KMMsgBase::autoDetectCharset( mMsgPart->charset(),
KMMessage::preferredCharsets(), name );
if ( encoding.isEmpty() ) encoding = "utf-8";
QByteArray encName = KMMsgBase::encodeRFC2231String( name, encoding );
QByteArray encName = KMMsgBase::encodeRFC2231StringAutoDetectCharset( name, mMsgPart->charset() );
cDisp += "\n\tfilename";
if ( name != QString( encName ) )

@ -645,14 +645,7 @@ void MessageComposer::chiasmusEncryptAllAttachments() {
part->setTypeStr( "application" );
part->setSubtypeStr( "vnd.de.bund.bsi.chiasmus" );
part->setName( filename + ".xia" );
// this is taken from kmmsgpartdlg.cpp:
QByteArray encoding =
KMMsgBase::autoDetectCharset( part->charset(),
KMMessage::preferredCharsets(), filename );
if ( encoding.isEmpty() )
encoding = "utf-8";
const QByteArray enc_name = KMMsgBase::encodeRFC2231String( filename + ".xia", encoding );
const QByteArray enc_name = KMMsgBase::encodeRFC2231StringAutoDetectCharset( filename + ".xia", part->charset() );
const QByteArray cDisp = "attachment;\n\tfilename"
+ ( QString( enc_name ) != filename + ".xia"
? "*=" + enc_name

Loading…
Cancel
Save