aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2018-05-16 10:41:34 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2018-05-22 06:26:23 +0000
commitf4528963080fbf5ccd71068b03c84f757a3253aa (patch)
treecc9d4609647406c2a0a3fed0809186c05d9dbf1e
parentf129ed9d961559b489919445198727d4fd6a5d36 (diff)
Debugger: Remove DetailedErrorDelegate
Change-Id: I08cd9af5e11e705378a53075c7fade44fc3246ce Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp17
-rw-r--r--src/plugins/debugger/analyzer/detailederrorview.cpp104
-rw-r--r--src/plugins/debugger/analyzer/detailederrorview.h4
-rw-r--r--src/plugins/valgrind/xmlprotocol/errorlistmodel.cpp22
4 files changed, 38 insertions, 109 deletions
diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
index 1834ef02d7..ddfc4e4bcf 100644
--- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
+++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
@@ -34,7 +34,6 @@
#include <utils/qtcassert.h>
#include <utils/utilsicons.h>
-#include <QCoreApplication>
#include <QFileInfo>
#include <cmath>
@@ -232,18 +231,6 @@ Qt::ItemFlags DiagnosticItem::flags(int column) const
return itemFlags;
}
-static QVariant locationData(int role, const Debugger::DiagnosticLocation &location)
-{
- switch (role) {
- case Debugger::DetailedErrorView::LocationRole:
- return QVariant::fromValue(location);
- case Qt::ToolTipRole:
- return location.filePath.isEmpty() ? QVariant() : QVariant(location.filePath);
- default:
- return QVariant();
- }
-}
-
static QVariant iconData(const QString &type)
{
if (type == "warning")
@@ -260,7 +247,7 @@ static QVariant iconData(const QString &type)
QVariant DiagnosticItem::data(int column, int role) const
{
if (column == Debugger::DetailedErrorView::LocationColumn)
- return locationData(role, m_diagnostic.location);
+ return Debugger::DetailedErrorView::locationData(role, m_diagnostic.location);
if (column == DiagnosticView::FixItColumn) {
if (role == Qt::CheckStateRole)
@@ -305,7 +292,7 @@ ExplainingStepItem::ExplainingStepItem(const ExplainingStep &step) : m_step(step
QVariant ExplainingStepItem::data(int column, int role) const
{
if (column == Debugger::DetailedErrorView::LocationColumn)
- return locationData(role, m_step.location);
+ return Debugger::DetailedErrorView::locationData(role, m_step.location);
if (column == DiagnosticView::FixItColumn)
return QVariant();
diff --git a/src/plugins/debugger/analyzer/detailederrorview.cpp b/src/plugins/debugger/analyzer/detailederrorview.cpp
index a5ee070a1a..85ea430f34 100644
--- a/src/plugins/debugger/analyzer/detailederrorview.cpp
+++ b/src/plugins/debugger/analyzer/detailederrorview.cpp
@@ -41,91 +41,14 @@
#include <QHeaderView>
#include <QMenu>
#include <QPainter>
-#include <QSharedPointer>
-#include <QTextDocument>
namespace Debugger {
-namespace Internal {
-
-class DetailedErrorDelegate : public QStyledItemDelegate
-{
- Q_OBJECT
-
-public:
- DetailedErrorDelegate(QTreeView *parent) : QStyledItemDelegate(parent) { }
-
-private:
- QString actualText(const QModelIndex &index) const
- {
- const auto location = index.model()->data(index, DetailedErrorView::LocationRole)
- .value<DiagnosticLocation>();
- return location.isValid()
- ? QString::fromLatin1("<a href=\"file://%1\">%2:%3:%4")
- .arg(location.filePath, QFileInfo(location.filePath).fileName())
- .arg(location.line)
- .arg(location.column)
- : QString();
- }
-
- using DocConstPtr = QSharedPointer<const QTextDocument>;
- DocConstPtr document(const QStyleOptionViewItem &option) const
- {
- const auto doc = QSharedPointer<QTextDocument>::create();
- doc->setHtml(option.text);
- doc->setTextWidth(option.rect.width());
- doc->setDocumentMargin(0);
- return doc;
- }
-
- QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
- {
- QStyleOptionViewItem opt = option;
- opt.text = actualText(index);
- initStyleOption(&opt, index);
-
- const DocConstPtr doc = document(opt);
- return QSize(doc->idealWidth(), doc->size().height());
- }
-
- void paint(QPainter *painter, const QStyleOptionViewItem &option,
- const QModelIndex &index) const override
- {
- QStyleOptionViewItem opt = option;
- initStyleOption(&opt, index);
-
- QStyle *style = opt.widget? opt.widget->style() : QApplication::style();
-
- // Painting item without text
- opt.text.clear();
- style->drawControl(QStyle::CE_ItemViewItem, &opt, painter);
- opt.text = actualText(index);
-
- QAbstractTextDocumentLayout::PaintContext ctx;
-
- // Highlighting text if item is selected
- if (opt.state & QStyle::State_Selected) {
- ctx.palette.setColor(QPalette::Text, opt.palette.color(QPalette::Active,
- QPalette::HighlightedText));
- }
-
- QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &opt);
- painter->save();
- painter->translate(textRect.topLeft());
- painter->setClipRect(textRect.translated(-textRect.topLeft()));
- document(opt)->documentLayout()->draw(painter, ctx);
- painter->restore();
- }
-};
-
-} // namespace Internal
-
DetailedErrorView::DetailedErrorView(QWidget *parent) :
QTreeView(parent),
m_copyAction(new QAction(this))
{
header()->setSectionResizeMode(QHeaderView::ResizeToContents);
- setItemDelegateForColumn(LocationColumn, new Internal::DetailedErrorDelegate(this));
m_copyAction->setText(tr("Copy"));
m_copyAction->setIcon(Utils::Icons::COPY.icon());
@@ -187,6 +110,31 @@ void DetailedErrorView::goBack()
setCurrentRow(prevRow >= 0 ? prevRow : rowCount() - 1);
}
+QVariant DetailedErrorView::locationData(int role, const DiagnosticLocation &location)
+{
+ switch (role) {
+ case Debugger::DetailedErrorView::LocationRole:
+ return QVariant::fromValue(location);
+ case Qt::DisplayRole:
+ return location.isValid() ? QString::fromLatin1("%1:%2:%3")
+ .arg(QFileInfo(location.filePath).fileName())
+ .arg(location.line)
+ .arg(location.column)
+ : QString();
+ case Qt::ToolTipRole:
+ return location.filePath.isEmpty() ? QVariant() : QVariant(location.filePath);
+ case Qt::FontRole: {
+ QFont font = QApplication::font();
+ font.setUnderline(true);
+ return font;
+ }
+ case Qt::ForegroundRole:
+ return QApplication::palette().link().color();
+ default:
+ return QVariant();
+ }
+}
+
int DetailedErrorView::rowCount() const
{
return model() ? model()->rowCount() : 0;
@@ -218,5 +166,3 @@ void DetailedErrorView::setCurrentRow(int row)
}
} // namespace Debugger
-
-#include "detailederrorview.moc"
diff --git a/src/plugins/debugger/analyzer/detailederrorview.h b/src/plugins/debugger/analyzer/detailederrorview.h
index 1614605412..845bbee362 100644
--- a/src/plugins/debugger/analyzer/detailederrorview.h
+++ b/src/plugins/debugger/analyzer/detailederrorview.h
@@ -32,6 +32,8 @@
namespace Debugger {
+class DiagnosticLocation;
+
class DEBUGGER_EXPORT DetailedErrorView : public QTreeView
{
Q_OBJECT
@@ -53,6 +55,8 @@ public:
LocationColumn,
};
+ static QVariant locationData(int role, const DiagnosticLocation &location);
+
private:
void contextMenuEvent(QContextMenuEvent *e) override;
void currentChanged(const QModelIndex &current, const QModelIndex &previous) override;
diff --git a/src/plugins/valgrind/xmlprotocol/errorlistmodel.cpp b/src/plugins/valgrind/xmlprotocol/errorlistmodel.cpp
index f574f89c24..49e668176d 100644
--- a/src/plugins/valgrind/xmlprotocol/errorlistmodel.cpp
+++ b/src/plugins/valgrind/xmlprotocol/errorlistmodel.cpp
@@ -173,24 +173,16 @@ ErrorItem::ErrorItem(const ErrorListModel *model, const Error &error)
}
}
-static QVariant location(const Frame &frame, int role)
+static QVariant locationData(int role, const Frame &frame)
{
- switch (role) {
- case Debugger::DetailedErrorView::LocationRole:
- return QVariant::fromValue(Debugger::DiagnosticLocation(frame.filePath(), frame.line(), 0));
- case Qt::ToolTipRole:
- return frame.filePath().isEmpty() ? QVariant() : QVariant(frame.filePath());
- default:
- return QVariant();
- }
+ const Debugger::DiagnosticLocation location(frame.filePath(), frame.line(), 0);
+ return Debugger::DetailedErrorView::locationData(role, location);
}
QVariant ErrorItem::data(int column, int role) const
{
- if (column == Debugger::DetailedErrorView::LocationColumn) {
- const Frame frame = m_model->findRelevantFrame(m_error);
- return location(frame, role);
- }
+ if (column == Debugger::DetailedErrorView::LocationColumn)
+ return locationData(role, m_model->findRelevantFrame(m_error));
// DiagnosticColumn
switch (role) {
@@ -243,7 +235,7 @@ QVariant StackItem::data(int column, int role) const
{
const ErrorItem * const errorItem = getErrorItem();
if (column == Debugger::DetailedErrorView::LocationColumn)
- return location(errorItem->modelPrivate()->findRelevantFrame(errorItem->error()), role);
+ return locationData(role, errorItem->modelPrivate()->findRelevantFrame(errorItem->error()));
// DiagnosticColumn
switch (role) {
@@ -271,7 +263,7 @@ FrameItem::FrameItem(const Frame &frame) : m_frame(frame)
QVariant FrameItem::data(int column, int role) const
{
if (column == Debugger::DetailedErrorView::LocationColumn)
- return location(m_frame, role);
+ return locationData(role, m_frame);
// DiagnosticColumn
switch (role) {