Files
qt-creator/src/plugins/autotest/testtreeview.cpp

95 lines
3.5 KiB
C++
Raw Normal View History

2014-10-07 12:30:54 +02:00
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
2014-10-07 12:30:54 +02:00
**
** This file is part of Qt Creator.
2014-10-07 12:30:54 +02:00
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
2014-10-07 12:30:54 +02:00
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
2014-10-07 12:30:54 +02:00
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
2014-10-07 12:30:54 +02:00
**
****************************************************************************/
#include "autotestconstants.h"
#include "testtreeitem.h"
#include "testtreemodel.h"
#include "testtreeview.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/icontext.h>
2014-10-07 12:30:54 +02:00
#include <coreplugin/icore.h>
namespace Autotest {
namespace Internal {
TestTreeView::TestTreeView(QWidget *parent)
: NavigationTreeView(parent),
m_context(new Core::IContext(this))
{
setExpandsOnDoubleClick(false);
m_context->setWidget(this);
m_context->setContext(Core::Context(Constants::AUTOTEST_CONTEXT));
Core::ICore::addContextObject(m_context);
}
void TestTreeView::selectAll()
{
changeCheckStateAll(Qt::Checked);
2014-10-07 12:30:54 +02:00
}
void TestTreeView::deselectAll()
{
changeCheckStateAll(Qt::Unchecked);
2014-10-07 12:30:54 +02:00
}
// this avoids the re-evaluation of parent nodes when modifying the child nodes (setData())
void TestTreeView::changeCheckStateAll(const Qt::CheckState checkState)
2014-10-07 12:30:54 +02:00
{
const TestTreeModel *model = TestTreeModel::instance();
2014-11-06 16:01:06 +01:00
for (int rootRow = 0; rootRow < model->rowCount(rootIndex()); ++rootRow) {
2014-11-06 16:01:06 +01:00
QModelIndex currentRootIndex = model->index(rootRow, 0, rootIndex());
if (!currentRootIndex.isValid())
return;
int count = model->rowCount(currentRootIndex);
QModelIndex last;
for (int classesRow = 0; classesRow < count; ++classesRow) {
const QModelIndex classesIndex = model->index(classesRow, 0, currentRootIndex);
int funcCount = model->rowCount(classesIndex);
TestTreeItem *item = static_cast<TestTreeItem *>(classesIndex.internalPointer());
if (item) {
item->setData(0, checkState, Qt::CheckStateRole);
2014-11-06 16:01:06 +01:00
if (!item->childCount())
last = classesIndex;
}
for (int functionRow = 0; functionRow < funcCount; ++functionRow) {
last = model->index(functionRow, 0, classesIndex);
TestTreeItem *item = static_cast<TestTreeItem *>(last.internalPointer());
if (item)
item->setData(0, checkState, Qt::CheckStateRole);
2014-11-06 16:01:06 +01:00
}
2014-10-07 12:30:54 +02:00
}
if (count == 0) {
if (auto item = static_cast<TestTreeItem *>(currentRootIndex.internalPointer()))
item->setData(0, checkState, Qt::CheckStateRole);
}
2014-11-06 16:01:06 +01:00
emit dataChanged(currentRootIndex, last);
2014-10-07 12:30:54 +02:00
}
}
} // namespace Internal
} // namespace Autotest