kdelibs/kdeui/tests/proxymodeltestapp/descendantpmwidget.cpp
2014-11-13 01:04:59 +02:00

168 lines
4.1 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* This file is part of the proxy model test suite.
*
* Copyright 2009  Stephen Kelly <steveire@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301  USA
*/
#include "descendantpmwidget.h"
#include <QTreeView>
#include <QSplitter>
#include "dynamictreemodel.h"
#include "dynamictreewidget.h"
#include "kdescendantsproxymodel.h"
#include <QHBoxLayout>
#include <QLineEdit>
#include <QApplication>
#include "modeleventlogger.h"
DescendantProxyModelWidget::DescendantProxyModelWidget(QWidget* parent): QWidget(parent)
{
QHBoxLayout *layout = new QHBoxLayout(this);
QSplitter *vSplitter = new QSplitter( this );
layout->addWidget(vSplitter);
m_rootModel = new DynamicTreeModel(this);
DynamicTreeWidget *dynTreeWidget = new DynamicTreeWidget(m_rootModel, vSplitter);
dynTreeWidget->setInitialTree(
"- 1"
"- 2"
"- - 3"
"- - 3"
"- - - 4"
"- - - 4"
"- - - - 4"
"- - 4"
"- - 5"
"- - - 4"
"- - - - 4"
"- - 5"
"- 6"
"- 7"
"- - 8"
"- - - 9"
"- - - 10"
"- - - - 9"
"- - - - - 10"
"- - - - - - 9"
"- - - - - - 10"
"- - - - - - - 9"
"- - - - - - - - 10"
"- - - - - - - - 9"
"- - - - - - - 10"
"- - - - - 9"
"- - - - - 9"
"- - - - - 9"
"- - - - - 10"
"- - - - - - 9"
"- - - - - - 10"
"- - - - - 9"
"- - - - - 9"
"- - - - - 9"
"- - - - - 10"
"- - - - - - 9"
"- - - - - - 10"
"- - - - 10"
"- - 11"
"- - 12"
"- 13"
"- 14"
"- 15"
"- - 16"
"- - - 17"
"- - - 18"
"- 19"
"- 20"
"- 21");
m_eventLogger = new ModelEventLogger(m_rootModel, this);
m_descProxyModel = new KDescendantsProxyModel(this);
m_descProxyModel->setSourceModel(m_rootModel);
// KDescendantsProxyModel *descProxyModel2 = new KDescendantsProxyModel(this);
// descProxyModel2->setSourceModel(m_rootModel);
// descProxyModel2->setDisplayAncestorData(true);
// QTreeView *treeview = new QTreeView( vSplitter );
// treeview->setModel(m_rootModel);
// treeview->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_descView = new QTreeView( vSplitter );
m_descView->setModel(m_descProxyModel);
// QTreeView *descView2 = new QTreeView( vSplitter );
// descView2->setModel(descProxyModel2);
// QWidget *w = new QWidget(vSplitter);
// QVBoxLayout *vLayout = new QVBoxLayout(w);
// QTreeView *matchView = new QTreeView(w);
// matchView->setModel(m_selectionProxyModel);
// m_lineEdit = new QLineEdit(w);
// connect(m_lineEdit, SIGNAL(textChanged(QString)), SLOT(doMatch(QString)));
// connect(m_descView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(refreshMatch()));
// vLayout->addWidget(m_lineEdit);
// vLayout->addWidget(matchView);
setLayout(layout);
}
DescendantProxyModelWidget::~DescendantProxyModelWidget()
{
}
void DescendantProxyModelWidget::doMatch(const QString &matchData)
{
Q_UNUSED(matchData);
#if 0
m_itemSelectionModel->clearSelection();
if (matchData.isEmpty())
return;
QModelIndex start = m_descView->currentIndex();
if (!start.isValid())
start = m_descProxyModel->index(0, 0);
// TODO: get from user.
int hits = -1;
QModelIndexList matches = m_descProxyModel->match(start, Qt::DisplayRole, matchData, hits, Qt::MatchContains);
foreach(const QModelIndex &matchingIndex, matches)
{
m_itemSelectionModel->select(matchingIndex, QItemSelectionModel::Select | QItemSelectionModel::Rows);
}
#endif
}
void DescendantProxyModelWidget::refreshMatch()
{
doMatch(m_lineEdit->text());
}