Improve QDebug formatting of QtSql classes.

Fix quoting/spaces, introduce QDebugStateSaver, add missing fields
of QSqlField.

Task-number: QTBUG-39388
Change-Id: Id397f9e79f4d4d2bb5c903cd96bf2c27f8e1b7c3
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
bb10
Friedemann Kleint 2014-10-22 17:03:48 +02:00
parent 88057e3407
commit d6d3841e71
4 changed files with 37 additions and 22 deletions

View File

@ -1503,15 +1503,18 @@ QSql::NumericalPrecisionPolicy QSqlDatabase::numericalPrecisionPolicy() const
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QSqlDatabase &d)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
dbg.noquote();
if (!d.isValid()) {
dbg.nospace() << "QSqlDatabase(invalid)";
return dbg.space();
dbg << "QSqlDatabase(invalid)";
return dbg;
}
dbg.nospace() << "QSqlDatabase(driver=\"" << d.driverName() << "\", database=\""
<< d.databaseName() << "\", host=\"" << d.hostName() << "\", port=" << d.port()
<< ", user=\"" << d.userName() << "\", open=" << d.isOpen() << ")";
return dbg.space();
dbg << "QSqlDatabase(driver=\"" << d.driverName() << "\", database=\""
<< d.databaseName() << "\", host=\"" << d.hostName() << "\", port=" << d.port()
<< ", user=\"" << d.userName() << "\", open=" << d.isOpen() << ')';
return dbg;
}
#endif

View File

@ -39,9 +39,11 @@ QT_BEGIN_NAMESPACE
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QSqlError &s)
{
dbg.nospace() << "QSqlError(" << s.nativeErrorCode() << ", " << s.driverText() <<
", " << s.databaseText() << ')';
return dbg.space();
QDebugStateSaver saver(dbg);
dbg.nospace();
dbg << "QSqlError(" << s.nativeErrorCode() << ", " << s.driverText()
<< ", " << s.databaseText() << ')';
return dbg;
}
#endif

View File

@ -509,21 +509,24 @@ bool QSqlField::isValid() const
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QSqlField &f)
{
dbg.nospace() << "QSqlField(" << f.name() << ", " << QMetaType::typeName(f.type());
QDebugStateSaver saver(dbg);
dbg.nospace();
dbg << "QSqlField(" << f.name() << ", " << QMetaType::typeName(f.type());
if (f.length() >= 0)
dbg.nospace() << ", length: " << f.length();
dbg << ", length: " << f.length();
if (f.precision() >= 0)
dbg.nospace() << ", precision: " << f.precision();
dbg << ", precision: " << f.precision();
if (f.requiredStatus() != QSqlField::Unknown)
dbg.nospace() << ", required: "
<< (f.requiredStatus() == QSqlField::Required ? "yes" : "no");
dbg.nospace() << ", generated: " << (f.isGenerated() ? "yes" : "no");
dbg << ", required: "
<< (f.requiredStatus() == QSqlField::Required ? "yes" : "no");
dbg << ", generated: " << (f.isGenerated() ? "yes" : "no");
if (f.typeID() >= 0)
dbg.nospace() << ", typeID: " << f.typeID();
dbg << ", typeID: " << f.typeID();
if (!f.defaultValue().isNull())
dbg.nospace() << ", auto-value: \"" << f.defaultValue() << '\"';
dbg.nospace() << ')';
return dbg.space();
dbg << ", defaultValue: \"" << f.defaultValue() << '\"';
dbg << ", autoValue: " << f.isAutoValue()
<< ", readOnly: " << f.isReadOnly() << ')';
return dbg;
}
#endif

View File

@ -509,9 +509,16 @@ void QSqlRecord::detach()
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QSqlRecord &r)
{
dbg << "QSqlRecord(" << r.count() << ')';
for (int i = 0; i < r.count(); ++i)
dbg << '\n' << QString::fromLatin1("%1:").arg(i, 2) << r.field(i) << r.value(i).toString();
QDebugStateSaver saver(dbg);
dbg.nospace();
const int count = r.count();
dbg << "QSqlRecord(" << count << ')';
for (int i = 0; i < count; ++i) {
dbg.nospace();
dbg << '\n' << qSetFieldWidth(2) << right << i << left << qSetFieldWidth(0) << ':';
dbg.space();
dbg << r.field(i) << r.value(i).toString();
}
return dbg;
}
#endif