forked from qt-creator/qt-creator
ClangTools: Make fixit items more user-friendly
...by providing an icon and a text describing what will be done. Change-Id: I923c4d593314c903adcbd831028fef5e69d28783 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -380,11 +380,9 @@ static QVariant iconData(const QString &type)
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString withLineColumnPrefixed(const QString &text,
|
static QString lineColumnString(const Debugger::DiagnosticLocation &location)
|
||||||
const Debugger::DiagnosticLocation &location)
|
|
||||||
{
|
{
|
||||||
return QString("%1:%2: %3")
|
return QString("%1:%2").arg(QString::number(location.line), QString::number(location.column));
|
||||||
.arg(QString::number(location.line), QString::number(location.column), text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant DiagnosticItem::data(int column, int role) const
|
QVariant DiagnosticItem::data(int column, int role) const
|
||||||
@@ -428,7 +426,8 @@ QVariant DiagnosticItem::data(int column, int role) const
|
|||||||
case ClangToolsDiagnosticModel::TextRole:
|
case ClangToolsDiagnosticModel::TextRole:
|
||||||
return m_diagnostic.description;
|
return m_diagnostic.description;
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
return withLineColumnPrefixed(m_diagnostic.description, m_diagnostic.location);
|
return QString("%1: %2").arg(lineColumnString(m_diagnostic.location),
|
||||||
|
m_diagnostic.description);
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
return createDiagnosticToolTipString(m_diagnostic);
|
return createDiagnosticToolTipString(m_diagnostic);
|
||||||
case Qt::DecorationRole:
|
case Qt::DecorationRole:
|
||||||
@@ -495,6 +494,11 @@ static QVariant iconForExplainingStepMessage(const QString &message)
|
|||||||
return iconData(message.mid(0, index));
|
return iconData(message.mid(0, index));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString rangeString(const QVector<Debugger::DiagnosticLocation> &ranges)
|
||||||
|
{
|
||||||
|
return QString("%1-%2").arg(lineColumnString(ranges[0]), lineColumnString(ranges[1]));
|
||||||
|
}
|
||||||
|
|
||||||
QVariant ExplainingStepItem::data(int column, int role) const
|
QVariant ExplainingStepItem::data(int column, int role) const
|
||||||
{
|
{
|
||||||
if (column == DiagnosticView::FixItColumn)
|
if (column == DiagnosticView::FixItColumn)
|
||||||
@@ -511,11 +515,28 @@ QVariant ExplainingStepItem::data(int column, int role) const
|
|||||||
return m_step.message;
|
return m_step.message;
|
||||||
case ClangToolsDiagnosticModel::DiagnosticRole:
|
case ClangToolsDiagnosticModel::DiagnosticRole:
|
||||||
return QVariant::fromValue(static_cast<DiagnosticItem *>(parent())->diagnostic());
|
return QVariant::fromValue(static_cast<DiagnosticItem *>(parent())->diagnostic());
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole: {
|
||||||
return m_step.message;
|
if (m_step.isFixIt) {
|
||||||
|
if (m_step.ranges[0] == m_step.ranges[1]) {
|
||||||
|
return QString("%1: Insertion of \"%2\".")
|
||||||
|
.arg(lineColumnString(m_step.location), m_step.message);
|
||||||
|
}
|
||||||
|
if (m_step.message.isEmpty()) {
|
||||||
|
return QString("%1: Removal of %2.")
|
||||||
|
.arg(lineColumnString(m_step.location), rangeString(m_step.ranges));
|
||||||
|
}
|
||||||
|
return QString("%1: Replacement of %2 with: \"%3\".")
|
||||||
|
.arg(lineColumnString(m_step.location),
|
||||||
|
rangeString(m_step.ranges),
|
||||||
|
m_step.message);
|
||||||
|
}
|
||||||
|
return QString("%1: %2").arg(lineColumnString(m_step.location), m_step.message);
|
||||||
|
}
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
return createExplainingStepToolTipString(m_step);
|
return createExplainingStepToolTipString(m_step);
|
||||||
case Qt::DecorationRole:
|
case Qt::DecorationRole:
|
||||||
|
if (m_step.isFixIt)
|
||||||
|
return Utils::Icons::CODEMODEL_FIXIT.icon();
|
||||||
return iconForExplainingStepMessage(m_step.message);
|
return iconForExplainingStepMessage(m_step.message);
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
Reference in New Issue
Block a user