| 89 | } |
| 90 | |
| 91 | ProblemTreeView::ProblemTreeView(QWidget* parent, QAbstractItemModel* itemModel) |
| 92 | : QTreeView(parent) |
| 93 | , m_proxy(new QSortFilterProxyModel(this)) |
| 94 | { |
| 95 | setObjectName(QStringLiteral("Problem Reporter Tree")); |
| 96 | setWhatsThis(i18nc("@info:whatsthis", "Problems")); |
| 97 | setItemDelegate(new ProblemTreeViewItemDelegate(this)); |
| 98 | setSelectionBehavior(QAbstractItemView::SelectRows); |
| 99 | setUniformRowHeights(true); |
| 100 | |
| 101 | m_proxy->setSortRole(ProblemModel::SeverityRole); |
| 102 | m_proxy->setDynamicSortFilter(true); |
| 103 | m_proxy->sort(0, Qt::AscendingOrder); |
| 104 | |
| 105 | auto* problemModel = qobject_cast<ProblemModel*>(itemModel); |
| 106 | Q_ASSERT(problemModel); |
| 107 | setModel(problemModel); |
| 108 | |
| 109 | header()->setStretchLastSection(false); |
| 110 | if (!problemModel->features().testFlag(ProblemModel::ShowSource)) { |
| 111 | hideColumn(ProblemModel::Source); |
| 112 | } |
| 113 | |
| 114 | connect(this, &ProblemTreeView::clicked, this, &ProblemTreeView::itemActivated); |
| 115 | |
| 116 | connect(model(), &QAbstractItemModel::rowsInserted, this, &ProblemTreeView::changed); |
| 117 | connect(model(), &QAbstractItemModel::rowsRemoved, this, &ProblemTreeView::changed); |
| 118 | connect(model(), &QAbstractItemModel::modelReset, this, &ProblemTreeView::changed); |
| 119 | |
| 120 | m_proxy->setFilterKeyColumn(-1); |
| 121 | m_proxy->setFilterCaseSensitivity(Qt::CaseInsensitive); |
| 122 | |
| 123 | resizeColumns(); |
| 124 | } |
| 125 | |
| 126 | ProblemTreeView::~ProblemTreeView() |
| 127 | { |