Fix a bug for the case when a message has no encoding specified then the

encoding for the last message read with an encoding was being used instead of
iso8859-1.

Anyway it fixes the problem exhibited by the recent kevin lo post on
kde-core.

Also save/restore of the chosen encoding is supported at least in the
main window. I think this is necessary as for some people "Auto" is
totally broken, and unreadable fonts are shown for non iso8859-1
messages.

svn path=/trunk/kdenetwork/kmail/; revision=67220
wilder-work
Don Sanders 26 years ago
parent b54496cee7
commit 42defd6cce
  1. 10
      kmmainwin.cpp
  2. 5
      kmmainwin.h
  3. 11
      kmreaderwin.cpp

@ -144,6 +144,9 @@ void KMMainWin::readPreConfig(void)
config->setGroup("Geometry");
mLongFolderList = config->readBoolEntry("longFolderList", false);
config->setGroup("General");
mEncodingStr = config->readEntry("encoding", "");
}
@ -294,6 +297,7 @@ void KMMainWin::writeConfig(void)
config->writeEntry("Panners", s);
config->setGroup("General");
config->writeEntry("encoding", mEncodingStr);
}
@ -413,11 +417,11 @@ void KMMainWin::activatePanners(void)
//-----------------------------------------------------------------------------
void KMMainWin::slotSetEncoding()
{
QString enc = mEncoding->currentText();
mEncodingStr = mEncoding->currentText();
if (mEncoding->currentItem() == 0) // Auto
mCodec = 0;
else
mCodec = KGlobal::charsets()->codecForName( enc );
mCodec = KGlobal::charsets()->codecForName( mEncodingStr );
mMsgView->setCodec(mCodec);
return;
}
@ -1373,6 +1377,8 @@ void KMMainWin::setupMenuBar()
encodings.prepend( i18n( "Auto" ) );
mEncoding->setItems( encodings );
mEncoding->setCurrentItem(0);
if (encodings.findIndex( mEncodingStr ) != -1)
mEncoding->setCurrentItem(encodings.findIndex( mEncodingStr ));
(void) new KAction( i18n("Edi&t..."), Key_T, this,
SLOT(slotEditMsg()), actionCollection(), "edit" );

@ -191,8 +191,9 @@ protected:
KMFolder *mFolder;
QTextCodec *mCodec;
QPopupMenu *mViewMenu, *mBodyPartsMenu;
KSelectAction *mEncoding;
bool mIntegrated;
KSelectAction *mEncoding;
QString mEncodingStr;
bool mIntegrated;
bool mSendOnCheck;
bool mBeepOnNew, mBoxOnNew, mExecOnNew;
QString mNewMailCmd;

@ -197,6 +197,7 @@ void KMReaderWin::readColorConfig(void)
void KMReaderWin::readConfig(void)
{
KConfig *config = kapp->config();
QString encoding;
config->setGroup("Pixmaps");
mBackingPixmapOn = FALSE;
@ -210,7 +211,9 @@ void KMReaderWin::readConfig(void)
mHeaderStyle = (HeaderStyle)config->readNumEntry("hdr-style", HdrFancy);
mAttachmentStyle = (AttachmentStyle)config->readNumEntry("attmnt-style",
SmartAttmnt);
encoding = config->readEntry("encoding", "iso8859-1" );
mCodec = QTextCodec::codecForName(encoding);
mAutoDetectEncoding = config->readBoolEntry("autodetect-encoding", true );
#ifndef KRN
int i, diff;
@ -257,11 +260,16 @@ void KMReaderWin::readConfig(void)
void KMReaderWin::writeConfig(bool aWithSync)
{
KConfig *config = kapp->config();
QString encoding = "";
if (mCodec)
encoding = mCodec->name();
config->setGroup("Reader");
config->writeEntry("attach-inline", mAtmInline);
config->writeEntry("hdr-style", (int)mHeaderStyle);
config->writeEntry("attmnt-style",(int)mAttachmentStyle);
config->writeEntry("encoding", encoding);
config->writeEntry("autodetect-encoding", mAutoDetectEncoding);
if (aWithSync) config->sync();
}
@ -486,6 +494,7 @@ void KMReaderWin::parseMsg(void)
QString type = mMsg->typeStr().lower();
if (mAutoDetectEncoding) {
mCodec = 0;
QString encoding;
if (type.find("text/") != -1)
encoding = mMsg->charset();

Loading…
Cancel
Save