Allow filtering of test results always

This almost reverts 8bb0340935.

Change-Id: I57ac2e1dd052ce434f7381f4d6df52ecdc68fed6
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Christian Stenger
2015-03-30 15:32:13 +02:00
committed by David Schulz
parent ae7b3e8404
commit 3f506a2a36
4 changed files with 6 additions and 21 deletions

View File

@@ -114,12 +114,13 @@ QVariant TestResultModel::data(const QModelIndex &index, int role) const
void TestResultModel::addTestResult(const TestResult &testResult) void TestResultModel::addTestResult(const TestResult &testResult)
{ {
const bool isCurrentTestMssg = testResult.result() == Result::MESSAGE_CURRENT_TEST; const bool isCurrentTestMssg = testResult.result() == Result::MESSAGE_CURRENT_TEST;
const bool hasCurrentTestMssg = m_availableResultTypes.contains(Result::MESSAGE_CURRENT_TEST); TestResult lastMssg = m_testResults.empty() ? TestResult() : m_testResults.last();
int position = m_testResults.size(); int position = m_testResults.size();
if (hasCurrentTestMssg && isCurrentTestMssg) { if (isCurrentTestMssg && lastMssg.result() == Result::MESSAGE_CURRENT_TEST) {
m_testResults.last().setDescription(testResult.description()); lastMssg.setDescription(testResult.description());
m_testResults.replace(m_testResults.size() - 1, lastMssg);
const QModelIndex changed = index(m_testResults.size() - 1, 0, QModelIndex()); const QModelIndex changed = index(m_testResults.size() - 1, 0, QModelIndex());
emit dataChanged(changed, changed); emit dataChanged(changed, changed);
} else { } else {
@@ -134,17 +135,15 @@ void TestResultModel::addTestResult(const TestResult &testResult)
int count = m_testResultCount.value(testResult.result(), 0); int count = m_testResultCount.value(testResult.result(), 0);
m_testResultCount.insert(testResult.result(), ++count); m_testResultCount.insert(testResult.result(), ++count);
} }
m_availableResultTypes.insert(testResult.result());
} }
void TestResultModel::removeCurrentTestMessage() void TestResultModel::removeCurrentTestMessage()
{ {
if (m_availableResultTypes.contains(Result::MESSAGE_CURRENT_TEST)) { TestResult lastMssg = m_testResults.empty() ? TestResult() : m_testResults.last();
if (lastMssg.result() == Result::MESSAGE_CURRENT_TEST) {
beginRemoveRows(QModelIndex(), m_testResults.size() - 1, m_testResults.size() - 1); beginRemoveRows(QModelIndex(), m_testResults.size() - 1, m_testResults.size() - 1);
m_testResults.removeLast(); m_testResults.removeLast();
endRemoveRows(); endRemoveRows();
m_availableResultTypes.remove(Result::MESSAGE_CURRENT_TEST);
} }
} }
@@ -159,7 +158,6 @@ void TestResultModel::clearTestResults()
m_maxWidthOfFileName = 0; m_maxWidthOfFileName = 0;
m_widthOfLineNumber = 0; m_widthOfLineNumber = 0;
endRemoveRows(); endRemoveRows();
m_availableResultTypes.clear();
} }
TestResult TestResultModel::testResult(const QModelIndex &index) const TestResult TestResultModel::testResult(const QModelIndex &index) const

View File

@@ -52,7 +52,6 @@ public:
int maxWidthOfFileName(const QFont &font); int maxWidthOfFileName(const QFont &font);
int maxWidthOfLineNumber(const QFont &font); int maxWidthOfLineNumber(const QFont &font);
bool hasResultType(Result::Type type) { return m_availableResultTypes.contains(type); }
int resultTypeCount(Result::Type type); int resultTypeCount(Result::Type type);
signals: signals:
@@ -66,7 +65,6 @@ private:
int m_maxWidthOfFileName; int m_maxWidthOfFileName;
int m_lastMaxWidthIndex; int m_lastMaxWidthIndex;
QFont m_measurementFont; QFont m_measurementFont;
QSet<Result::Type> m_availableResultTypes;
}; };
class TestResultFilterModel : public QSortFilterProxyModel class TestResultFilterModel : public QSortFilterProxyModel

View File

@@ -120,7 +120,6 @@ void TestResultsPane::createToolButtons()
m_filterButton->setPopupMode(QToolButton::InstantPopup); m_filterButton->setPopupMode(QToolButton::InstantPopup);
m_filterMenu = new QMenu(m_filterButton); m_filterMenu = new QMenu(m_filterButton);
initializeFilterMenu(); initializeFilterMenu();
connect(m_filterMenu, &QMenu::aboutToShow, this, &TestResultsPane::updateFilterMenu);
connect(m_filterMenu, &QMenu::triggered, this, &TestResultsPane::filterMenuTriggered); connect(m_filterMenu, &QMenu::triggered, this, &TestResultsPane::filterMenuTriggered);
m_filterButton->setMenu(m_filterMenu); m_filterButton->setMenu(m_filterMenu);
} }
@@ -349,15 +348,6 @@ void TestResultsPane::updateSummaryLabel()
m_summaryLabel->setText(labelText); m_summaryLabel->setText(labelText);
} }
void TestResultsPane::updateFilterMenu()
{
foreach (QAction *action, m_filterMenu->actions()) {
if (action->isCheckable())
action->setEnabled(m_model->hasResultType(
TestResult::toResultType(action->data().value<int>())));
}
}
void TestResultsPane::enableAllFilter() void TestResultsPane::enableAllFilter()
{ {
foreach (QAction *action, m_filterMenu->actions()) { foreach (QAction *action, m_filterMenu->actions()) {

View File

@@ -78,7 +78,6 @@ private slots:
void onItemActivated(const QModelIndex &index); void onItemActivated(const QModelIndex &index);
void onRunAllTriggered(); void onRunAllTriggered();
void onRunSelectedTriggered(); void onRunSelectedTriggered();
void updateFilterMenu();
void enableAllFilter(); void enableAllFilter();
void filterMenuTriggered(QAction *action); void filterMenuTriggered(QAction *action);