blob: 4bbc2c776d71079e1a339472757ca75a7202a412 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
// Copyright (C) 2022 The Qt Company Ltd
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "testresult.h"
#include <utils/treemodel.h>
#include <QSet>
#include <QSortFilterProxyModel>
namespace Squish {
namespace Internal {
class SquishResultItem : public Utils::TreeItem
{
public:
SquishResultItem(const TestResult &result);
QVariant data(int column, int role) const override;
TestResult result() const { return m_testResult; }
private:
TestResult m_testResult;
};
class SquishResultModel : public Utils::TreeModel<>
{
Q_OBJECT
public:
SquishResultModel(QObject *parent = nullptr);
bool hasResults() const { return m_rootItem ? m_rootItem->hasChildren() : false; }
int resultTypeCount(Result::Type type);
void clearResults();
void expandVisibleRootItems();
void updateResultTypeCount(const QModelIndex &parent, int first, int last);
void addResultItem(SquishResultItem *item);
signals:
void resultTypeCountUpdated();
private:
Utils::TreeItem *m_rootItem;
QHash<Result::Type, int> m_resultsCounter;
};
class SquishResultFilterModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
SquishResultFilterModel(SquishResultModel *sourceModel, QObject *parent = nullptr);
void enableAllResultTypes();
void toggleResultType(Result::Type type);
void clearResults();
bool hasResults();
TestResult testResult(const QModelIndex &idx) const;
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
private:
SquishResultModel *m_sourceModel;
QSet<Result::Type> m_enabled;
};
} // namespace Internal
} // namespace Squish
|