Remove codecForTr().
authorRobin Burchell <robin+qt@viroteck.net>
Tue, 31 Jan 2012 22:33:30 +0000 (00:33 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 6 Mar 2012 05:34:52 +0000 (06:34 +0100)
Similarly to change id I2f429fa7ef93bd75bb93a7f64c56db15b7283388, the capability
to arbitrarily alter the encoding of literals is very destructive, especially in
a world with libraries and plugins.

Change-Id: If0d4cd8dcf89792e39c1984cbde6b036cebfc02f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
dist/changes-5.0.0
src/corelib/codecs/qtextcodec.cpp
src/corelib/codecs/qtextcodec.h
src/corelib/global/qglobal.cpp
src/corelib/kernel/qcoreapplication.cpp
src/corelib/kernel/qcoreapplication.h
src/corelib/kernel/qmetaobject.cpp
src/corelib/kernel/qobject.cpp

index 9644df4..93f8543 100644 (file)
@@ -310,6 +310,10 @@ QtCore
   libraries, creating uncertainty/bugs in using QString easily, and (to a lesser
   extent) performance issues.
 
+* QTextCodec::codecForTr() and QTextCodec::setCodecForTr() have been removed,
+  QCoreApplication::Encoding value CodecForTr is now obsolete, use
+  DefaultCodec instead. For reasoning, see the codecForCStrings() removal above.
+
 * QIntValidator and QDoubleValidator no longer fall back to using the C locale if
   the requested locale fails to validate the input.
 
index f6f0cd8..13f0ec8 100644 (file)
@@ -145,8 +145,6 @@ static bool destroying_is_ok = false;
 #endif
 
 static QTextCodec *localeMapper = 0;
-QTextCodec *QTextCodec::cftr = 0;
-
 
 class QTextCodecCleanup
 {
@@ -1463,41 +1461,6 @@ QString QTextDecoder::toUnicode(const QByteArray &ba)
     return c->toUnicode(ba.constData(), ba.length(), &state);
 }
 
-
-/*!
-    \fn QTextCodec* QTextCodec::codecForTr()
-
-    Returns the codec used by QObject::tr() on its argument. If this
-    function returns 0 (the default), tr() assumes Latin-1.
-
-    \sa setCodecForTr()
-*/
-
-/*!
-    \fn void QTextCodec::setCodecForTr(QTextCodec *c)
-    \nonreentrant
-
-    Sets the codec used by QObject::tr() on its argument to \a c. If
-    \a c is 0 (the default), tr() assumes Latin-1.
-
-    If the literal quoted text in the program is not in the Latin-1
-    encoding, this function can be used to set the appropriate
-    encoding. For example, software developed by Korean programmers
-    might use eucKR for all the text in the program, in which case the
-    main() function might look like this:
-
-    \snippet doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp 3
-
-    Note that this is not the way to select the encoding that the \e
-    user has chosen. For example, to convert an application containing
-    literal English strings to Korean, all that is needed is for the
-    English strings to be passed through tr() and for translation
-    files to be loaded. For details of internationalization, see
-    \l{Internationalization with Qt}.
-
-    \sa codecForTr()
-*/
-
 /*!
     \since 4.4
 
index ad37005..b4b170f 100644 (file)
@@ -72,9 +72,6 @@ public:
     static QTextCodec* codecForLocale();
     static void setCodecForLocale(QTextCodec *c);
 
-    static QTextCodec* codecForTr();
-    static void setCodecForTr(QTextCodec *c);
-
     static QTextCodec *codecForHtml(const QByteArray &ba);
     static QTextCodec *codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec);
 
@@ -129,14 +126,10 @@ protected:
 
 private:
     friend class QTextCodecCleanup;
-    static QTextCodec *cftr;
     static bool validCodecs();
 };
 Q_DECLARE_OPERATORS_FOR_FLAGS(QTextCodec::ConversionFlags)
 
-        inline QTextCodec* QTextCodec::codecForTr() { return validCodecs() ? cftr : 0; }
-inline void QTextCodec::setCodecForTr(QTextCodec *c) { cftr = c; }
-
 class Q_CORE_EXPORT QTextEncoder {
     Q_DISABLE_COPY(QTextEncoder)
 public:
index a30250d..09d1786 100644 (file)
@@ -2233,9 +2233,7 @@ int qrand()
 
     The macro QT_TR_NOOP_UTF8() is identical except that it tells lupdate
     that the source string is encoded in UTF-8. Corresponding variants
-    exist in the QT_TRANSLATE_NOOP() family of macros, too. Note that
-    using these macros is not required if \c CODECFORTR is already set to
-    UTF-8 in the qmake project file.
+    exist in the QT_TRANSLATE_NOOP() family of macros, too.
 
     \sa QT_TRANSLATE_NOOP(), {Internationalization with Qt}
 */
index 515732b..184743e 100644 (file)
@@ -1438,11 +1438,9 @@ bool QCoreApplication::event(QEvent *e)
     This enum type defines the 8-bit encoding of character string
     arguments to translate():
 
-    \value CodecForTr  The encoding specified by
-                       QTextCodec::codecForTr() (Latin-1 if none has
-                       been set).
-    \value UnicodeUTF8  UTF-8.
-    \value DefaultCodec  (Obsolete) Use CodecForTr instead.
+    \value UnicodeUTF8   UTF-8.
+    \value Latin1        Latin-1.
+    \value DefaultCodec  Latin-1.
 
     \sa QObject::tr(), QObject::trUtf8(), QString::fromUtf8()
 */
@@ -1617,7 +1615,7 @@ static void replacePercentN(QString *result, int n)
     If none of the translation files contain a translation for \a
     sourceText in \a context, this function returns a QString
     equivalent of \a sourceText. The encoding of \a sourceText is
-    specified by \e encoding; it defaults to CodecForTr.
+    specified by \e encoding; it defaults to DefaultCodec.
 
     This function is not virtual. You can use alternative translation
     techniques by subclassing \l QTranslator.
@@ -1628,7 +1626,7 @@ static void replacePercentN(QString *result, int n)
     so will most likely result in crashes or other undesirable
     behavior.
 
-    \sa QObject::tr() installTranslator() QTextCodec::codecForTr()
+    \sa QObject::tr() installTranslator()
 */
 
 
@@ -1657,8 +1655,6 @@ QString QCoreApplication::translate(const char *context, const char *sourceText,
 #else
         if (encoding == UnicodeUTF8)
             result = QString::fromUtf8(sourceText);
-        else if (QTextCodec::codecForTr() != 0)
-            result = QTextCodec::codecForTr()->toUnicode(sourceText);
         else
 #endif
             result = QString::fromLatin1(sourceText);
index 18266a9..0a5181a 100644 (file)
@@ -137,11 +137,11 @@ public:
     static void installTranslator(QTranslator * messageFile);
     static void removeTranslator(QTranslator * messageFile);
 #endif
-    enum Encoding { CodecForTr, UnicodeUTF8, DefaultCodec = CodecForTr };
+    enum Encoding { UnicodeUTF8, Latin1, DefaultCodec = Latin1 };
     static QString translate(const char * context,
                              const char * key,
                              const char * disambiguation = 0,
-                             Encoding encoding = CodecForTr,
+                             Encoding encoding = DefaultCodec,
                              int n = -1);
 
     static void flush();
@@ -240,7 +240,7 @@ inline QString QCoreApplication::translate(const char *, const char *sourceText,
 public: \
     static inline QString tr(const char *sourceText, const char *disambiguation = 0, int n = -1) \
         { return QCoreApplication::translate(#context, sourceText, disambiguation, \
-                                             QCoreApplication::CodecForTr, n); } \
+                                             QCoreApplication::DefaultCodec, n); } \
     static inline QString trUtf8(const char *sourceText, const char *disambiguation = 0, int n = -1) \
         { return QCoreApplication::translate(#context, sourceText, disambiguation, \
                                              QCoreApplication::UnicodeUTF8, n); } \
index f962fb7..cacd999 100644 (file)
@@ -307,7 +307,7 @@ const QObject *QMetaObject::cast(const QObject *obj) const
 */
 QString QMetaObject::tr(const char *s, const char *c, int n) const
 {
-    return QCoreApplication::translate(d.stringdata, s, c, QCoreApplication::CodecForTr, n);
+    return QCoreApplication::translate(d.stringdata, s, c, QCoreApplication::DefaultCodec, n);
 }
 
 /*!
index 19440e9..3a4d1da 100644 (file)
@@ -1859,7 +1859,7 @@ void QObject::deleteLater()
     translators while performing translations is not supported. Doing
     so will probably result in crashes or other undesirable behavior.
 
-    \sa trUtf8(), QApplication::translate(), QTextCodec::setCodecForTr(), {Internationalization with Qt}
+    \sa trUtf8(), QApplication::translate(), {Internationalization with Qt}
 */
 
 /*!
@@ -1871,11 +1871,6 @@ void QObject::deleteLater()
     version. It is otherwise identical to tr(\a sourceText, \a
     disambiguation, \a n).
 
-    Note that using the Utf8 variants of the translation functions
-    is not required if \c CODECFORTR is already set to UTF-8 in the
-    qmake project file and QTextCodec::setCodecForTr("UTF-8") is
-    used.
-
     \warning This method is reentrant only if all translators are
     installed \e before calling this method. Installing or removing
     translators while performing translations is not supported. Doing