kdecore: remove KLocale getters related to text codec

see the comment in KLocalePrivate::initEncoding()

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-09-30 20:00:04 +03:00
parent 484f96e12e
commit 894a2d52bb
8 changed files with 5 additions and 225 deletions

View file

@ -941,22 +941,7 @@ QString KUrl::toMimeDataString() const // don't fold this into populateMimeData,
{
if ( isLocalFile() )
{
#if 1
return url();
#else
// According to the XDND spec, file:/ URLs for DND must have
// the hostname part. But in really it just breaks many apps,
// so it's disabled for now.
const QString s = url( 0, KGlobal::locale()->fileEncodingMib() );
if( !s.startsWith( QLatin1String ( "file://" ) ))
{
QString hostname = QHostInfo::localHostName();
if ( !hostname.isEmpty() )
{
return QString( "file://" ) + hostname + s.mid( 5 );
}
}
#endif
}
if (hasPass()) {

View file

@ -165,7 +165,6 @@ KLocale *KGlobal::locale()
d->locale = 0;
d->locale = new KLocale(mainComponent().catalogName());
d->localeIsFromFakeComponent = !d->mainComponent.isValid();
QTextCodec::setCodecForLocale(d->locale->codecForEncoding());
mainComponent().aboutData()->translateInternalProgramName();
QCoreApplication* coreApp = QCoreApplication::instance();
if (coreApp) { // testcase: kwrite --help: no qcore app

View file

@ -345,7 +345,7 @@ QTextCodec *KCharsets::codecForNameOrNull( const QByteArray& n ) const
// No name, assume locale (KDE's, not Qt's)
if ( d->codecForNameDict.contains( kSystemEncoding ) )
return d->codecForNameDict.value( kSystemEncoding );
QTextCodec* codec = KGlobal::locale()->codecForEncoding();
QTextCodec* codec = QTextCodec::codecForLocale();
d->codecForNameDict.insert(kSystemEncoding, codec);
return codec;
}

View file

@ -478,31 +478,6 @@ QString KLocale::defaultCountry()
return KLocalePrivate::defaultCountry();
}
const QByteArray KLocale::encoding() const
{
return d->encoding();
}
int KLocale::encodingMib() const
{
return d->encodingMib();
}
int KLocale::fileEncodingMib() const
{
return d->fileEncodingMib();
}
QTextCodec *KLocale::codecForEncoding() const
{
return d->codecForEncoding();
}
bool KLocale::setEncoding(int mibEnum)
{
return d->setEncoding(mibEnum);
}
QStringList KLocale::allLanguagesList() const
{
return d->allLanguagesList();

View file

@ -1238,46 +1238,6 @@ public:
*/
QStringList languageList() const;
/**
* Returns the user's preferred encoding.
*
* @return The name of the preferred encoding
*
* @see codecForEncoding
* @see encodingMib
*/
const QByteArray encoding() const;
/**
* Returns the user's preferred encoding.
*
* @return The Mib of the preferred encoding
*
* @see encoding
* @see codecForEncoding
*/
int encodingMib() const;
/**
* Returns the user's preferred encoding. Should never be NULL.
*
* @return The codec for the preferred encoding
*
* @see encoding
* @see encodingMib
*/
QTextCodec * codecForEncoding() const;
/**
* Returns the file encoding.
*
* @return The Mib of the file encoding
*
* @see QFile::encodeName
* @see QFile::decodeName
*/
int fileEncodingMib() const;
/**
* Changes the current date format.
*

View file

@ -99,8 +99,7 @@ KLocalePrivate::KLocalePrivate(KLocale *q_ptr, const QString &catalogName, KShar
m_language(QString()),
m_languages(0),
m_catalogName(QString()),
m_calendar(0),
m_codecForEncoding(0)
m_calendar(0)
{
init(catalogName, QString(), QString(), config, 0);
}
@ -113,8 +112,7 @@ KLocalePrivate::KLocalePrivate(KLocale *q_ptr, const QString& catalogName,
m_language(QString()),
m_languages(0),
m_catalogName(QString()),
m_calendar(0),
m_codecForEncoding(0)
m_calendar(0)
{
init(catalogName, language, country, KSharedConfig::Ptr(), config);
}
@ -196,11 +194,6 @@ void KLocalePrivate::copy(const KLocalePrivate &rhs)
m_byteSizeFmt = rhs.m_byteSizeFmt;
m_pageSize = rhs.m_pageSize;
m_measureSystem = rhs.m_measureSystem;
// Encoding settings
m_encoding = rhs.m_encoding;
m_codecForEncoding = rhs.m_codecForEncoding;
m_utf8FileEncoding = rhs.m_utf8FileEncoding;
}
KLocalePrivate::~KLocalePrivate()
@ -240,8 +233,6 @@ void KLocalePrivate::init(const QString& catalogName, const QString &language, c
useEnvironmentVariables = false;
}
initEncoding();
initFileNameEncoding();
initCountry(country, cg.readEntry(QLatin1String("Country")));
initLanguageList(language, cg.readEntry(QLatin1String("Language")), useEnvironmentVariables);
// Now that we have a language, we can set up the config which uses it to setLocale()
@ -2237,49 +2228,6 @@ bool KLocalePrivate::useDefaultLanguage() const
return language() == KLocale::defaultLanguage();
}
void KLocalePrivate::initEncoding()
{
m_codecForEncoding = 0;
// This all made more sense when we still had the EncodingEnum config key.
setEncoding(QTextCodec::codecForLocale()->mibEnum());
if (!m_codecForEncoding) {
kWarning() << "Cannot resolve system encoding, defaulting to ISO 8859-1.";
const int mibDefault = 4; // ISO 8859-1
setEncoding(mibDefault);
}
Q_ASSERT(m_codecForEncoding);
}
void KLocalePrivate::initFileNameEncoding()
{
// If the following environment variable is set, assume all filenames
// are in UTF-8 regardless of the current C locale.
m_utf8FileEncoding = !qgetenv("KDE_UTF8_FILENAMES").isEmpty();
if (!m_utf8FileEncoding) {
const QByteArray ctype = setlocale(LC_CTYPE, 0);
if (ctype.endsWith("UTF-8")) {
m_utf8FileEncoding = true;
return;
}
QByteArray lang = qgetenv("LC_ALL");
if (lang.isEmpty()) {
lang = qgetenv("LC_CTYPE");
}
if (lang.isEmpty()) {
lang = qgetenv("LANG");
}
if (lang.endsWith("UTF-8")) {
m_utf8FileEncoding = true;
return;
}
}
// Otherwise, stay with QFile's default filename encoding functions
// which, on Unix platforms, use the locale's codec.
}
void KLocalePrivate::setDateFormat(const QString &format)
{
m_dateFormat = format.trimmed();
@ -2406,39 +2354,6 @@ QString KLocalePrivate::defaultCountry()
return QString::fromLatin1("C");
}
const QByteArray KLocalePrivate::encoding() const
{
return codecForEncoding()->name();
}
int KLocalePrivate::encodingMib() const
{
return codecForEncoding()->mibEnum();
}
int KLocalePrivate::fileEncodingMib() const
{
if (m_utf8FileEncoding) {
return 106;
}
return codecForEncoding()->mibEnum();
}
QTextCodec *KLocalePrivate::codecForEncoding() const
{
return m_codecForEncoding;
}
bool KLocalePrivate::setEncoding(int mibEnum)
{
QTextCodec * codec = QTextCodec::codecForMib(mibEnum);
if (codec) {
m_codecForEncoding = codec;
}
return codec != 0;
}
QStringList KLocalePrivate::allLanguagesList()
{
if (!m_languages) {

View file

@ -845,55 +845,6 @@ public:
*/
KLocale::MeasureSystem measureSystem() const;
/***************************
** Encoding settings **
***************************/
protected:
/**
* @internal Figures out which encoding the user prefers.
*/
void initEncoding();
/**
* @internal Figures out which encoding the user prefers for filenames
* and sets up the appropriate QFile encoding and decoding functions.
*/
void initFileNameEncoding();
public:
/**
* @internal Sets the current encoding
* The worker of the same-name KLocale API function.
*/
bool setEncoding(int mibEnum);
/**
* @internal Returns the user's preferred encoding.
* The worker of the same-name KLocale API function.
*/
const QByteArray encoding() const;
/**
* @internal Returns the user's preferred encoding.
* The worker of the same-name KLocale API function.
*/
int encodingMib() const;
/**
* @internal Returns the file encoding.
* The worker of the same-name KLocale API function.
*/
int fileEncodingMib() const;
/**
* @internal Returns the user's preferred encoding.
* The worker of the same-name KLocale API function.
*/
QTextCodec *codecForEncoding() const;
/***************************
** Utilities **
***************************/
@ -992,11 +943,6 @@ private:
QList<QString> m_byteSizeFmt;
int m_pageSize;
KLocale::MeasureSystem m_measureSystem;
// Encoding settings
QString m_encoding;
QTextCodec *m_codecForEncoding;
bool m_utf8FileEncoding;
};
#endif /* KLOCALE_P_H */

View file

@ -50,8 +50,8 @@ KEncodingFileDialog::KEncodingFileDialog(const QString& startDir, const QString&
d->encoding->clear ();
QString sEncoding = encoding;
QString systemEncoding = QLatin1String(KGlobal::locale()->encoding());
if (sEncoding.isEmpty() || sEncoding == "System")
QByteArray systemEncoding = QTextCodec::codecForLocale()->name();
if (sEncoding.isEmpty() || sEncoding == QLatin1String("System"))
sEncoding = systemEncoding;
const QStringList encodings (KGlobal::charsets()->availableEncodingNames());