diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 03e4bd272409278d60d9383537b1b9f2368df4f8..366877071c4957f08027e362dc12d154f57dbf13 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -431,6 +431,36 @@ static QString quoteUnprintable(const QString &str) return encoded; } +static QString translate(const QString &str) +{ + if (str.startsWith(QLatin1Char('<'))) { + if (str == QLatin1String("<Edit>")) + return WatchHandler::tr("<Edit>"); + if (str == QLatin1String("<empty>")) + return WatchHandler::tr("<empty>"); + if (str == QLatin1String("<uninitialized>")) + return WatchHandler::tr("<uninitialized>"); + if (str == QLatin1String("<invalid>")) + return WatchHandler::tr("<invalid>"); + if (str == QLatin1String("<not accessible>")) + return WatchHandler::tr("<not accessible>"); + if (str.endsWith(QLatin1String(" items>"))) { + // '<10 items>' or '<>10 items>' (more than) + bool ok; + const bool moreThan = str.at(1) == QLatin1Char('>'); + const int numberPos = moreThan ? 2 : 1; + const int len = str.indexOf(QLatin1Char(' ')) - numberPos; + const int size = str.mid(numberPos, len).toInt(&ok); + QTC_ASSERT(ok, qWarning("WatchHandler: Invalid item count '%s'", + qPrintable(str))) + return moreThan ? + WatchHandler::tr("<more than %n items>", 0, size) : + WatchHandler::tr("<%n items>", 0, size); + } + } + return quoteUnprintable(str); +} + QString WatchModel::formattedValue(const WatchData &data) const { const QByteArray qtNamespace = engine()->qtNamespace(); @@ -469,34 +499,7 @@ QString WatchModel::formattedValue(const WatchData &data) const return reformatInteger(integer, format); } - QString result = value; - if (result.startsWith(QLatin1Char('<'))) { - if (result == QLatin1String("<Edit>")) - return WatchHandler::tr("<Edit>"); - if (result == QLatin1String("<empty>")) - return WatchHandler::tr("<empty>"); - if (result == QLatin1String("<uninitialized>")) - return WatchHandler::tr("<uninitialized>"); - if (result == QLatin1String("<invalid>")) - return WatchHandler::tr("<invalid>"); - if (result == QLatin1String("<not accessible>")) - return WatchHandler::tr("<not accessible>"); - if (result.endsWith(QLatin1String(" items>"))) { - // '<10 items>' or '<>10 items>' (more than) - bool ok; - const bool moreThan = result.at(1) == QLatin1Char('>'); - const int numberPos = moreThan ? 2 : 1; - const int len = result.indexOf(QLatin1Char(' ')) - numberPos; - const int size = result.mid(numberPos, len).toInt(&ok); - QTC_ASSERT(ok, qWarning("WatchHandler: Invalid item count '%s'", - qPrintable(result))) - return moreThan ? - WatchHandler::tr("<more than %n items>", 0, size) : - WatchHandler::tr("<%n items>", 0, size); - } - } - - return quoteUnprintable(result); + return translate(value); } // Get a pointer address from pointer values reported by the debugger. @@ -554,7 +557,7 @@ static inline QVariant editValue(const WatchData &d) stringValue.replace(QLatin1String("\n"), QLatin1String("\\n")); } } - return QVariant(stringValue); + return QVariant(translate(stringValue)); } bool WatchModel::canFetchMore(const QModelIndex &index) const