mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 10:22:48 +00:00
kdeui: remove unused KBreadcrumbSelectionModel, KCheckableProxyModel and KIdentityProxyModel classes
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
3b14da4dd0
commit
94199903d9
13 changed files with 0 additions and 1504 deletions
|
@ -28,7 +28,6 @@ install(
|
|||
KBookmarkManager
|
||||
KBookmarkMenu
|
||||
KBookmarkOwner
|
||||
KBreadcrumbSelectionModel
|
||||
KBuildSycocaProgressDialog
|
||||
KButtonGroup
|
||||
KCapacityBar
|
||||
|
@ -46,7 +45,6 @@ install(
|
|||
KCalendarSystem
|
||||
KCharMacroExpander
|
||||
KCharsets
|
||||
KCheckableProxyModel
|
||||
KCmdLineArgs
|
||||
KCmdLineOptions
|
||||
KCodecAction
|
||||
|
@ -158,7 +156,6 @@ install(
|
|||
KIconEffect
|
||||
KIconLoader
|
||||
KIconTheme
|
||||
KIdentityProxyModel
|
||||
KImageFilePreview
|
||||
KImageIO
|
||||
KInputDialog
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include "../kbreadcrumbselectionmodel.h"
|
|
@ -1 +0,0 @@
|
|||
#include "../kcheckableproxymodel.h"
|
|
@ -1 +0,0 @@
|
|||
#include "../kidentityproxymodel.h"
|
|
@ -125,10 +125,7 @@ set(kdeui_LIB_SRCS
|
|||
icons/kicon.cpp
|
||||
icons/kiconloader.cpp
|
||||
icons/kicontheme.cpp
|
||||
itemviews/kbreadcrumbselectionmodel.cpp
|
||||
itemviews/kcheckableproxymodel.cpp
|
||||
itemviews/klinkitemselectionmodel.cpp
|
||||
itemviews/kidentityproxymodel.cpp
|
||||
itemviews/krecursivefilterproxymodel.cpp
|
||||
itemviews/klistwidget.cpp
|
||||
itemviews/klistwidgetsearchline.cpp
|
||||
|
@ -449,12 +446,9 @@ install(
|
|||
icons/kicon.h
|
||||
icons/kiconloader.h
|
||||
icons/kicontheme.h
|
||||
itemviews/kbreadcrumbselectionmodel.h
|
||||
itemviews/kcheckableproxymodel.h
|
||||
itemviews/klinkitemselectionmodel.h
|
||||
itemviews/krecursivefilterproxymodel.h
|
||||
itemviews/klistwidget.h
|
||||
itemviews/kidentityproxymodel.h
|
||||
itemviews/klistwidgetsearchline.h
|
||||
itemviews/ktreewidgetsearchline.h
|
||||
itemviews/kfilterproxysearchline.h
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 43 KiB |
Binary file not shown.
Before Width: | Height: | Size: 14 KiB |
|
@ -1,240 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2010 Klarälvdalens Datakonsult AB,
|
||||
a KDAB Group company, info@kdab.net,
|
||||
author Stephen Kelly <stephen@kdab.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 Library General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "kbreadcrumbselectionmodel.h"
|
||||
|
||||
#include "kdebug.h"
|
||||
|
||||
class KBreadcrumbSelectionModelPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(KBreadcrumbSelectionModel)
|
||||
KBreadcrumbSelectionModel * const q_ptr;
|
||||
public:
|
||||
KBreadcrumbSelectionModelPrivate(KBreadcrumbSelectionModel *breadcrumbSelector, QItemSelectionModel *selectionModel, KBreadcrumbSelectionModel::BreadcrumbTarget direction)
|
||||
: q_ptr(breadcrumbSelector),
|
||||
m_includeActualSelection(true),
|
||||
m_selectionDepth(-1),
|
||||
m_showHiddenAscendantData(false),
|
||||
m_selectionModel(selectionModel),
|
||||
m_direction(direction),
|
||||
m_ignoreCurrentChanged(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Returns a selection containing the breadcrumbs for @p index
|
||||
*/
|
||||
QItemSelection getBreadcrumbSelection(const QModelIndex &index);
|
||||
|
||||
/**
|
||||
Returns a selection containing the breadcrumbs for @p selection
|
||||
*/
|
||||
QItemSelection getBreadcrumbSelection(const QItemSelection &selection);
|
||||
|
||||
void sourceSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
||||
|
||||
void init();
|
||||
void syncBreadcrumbs();
|
||||
|
||||
bool m_includeActualSelection;
|
||||
int m_selectionDepth;
|
||||
bool m_showHiddenAscendantData;
|
||||
QItemSelectionModel *m_selectionModel;
|
||||
KBreadcrumbSelectionModel::BreadcrumbTarget m_direction;
|
||||
bool m_ignoreCurrentChanged;
|
||||
};
|
||||
|
||||
KBreadcrumbSelectionModel::KBreadcrumbSelectionModel(QItemSelectionModel *selectionModel, QObject* parent)
|
||||
: QItemSelectionModel(const_cast<QAbstractItemModel *>(selectionModel->model()), parent),
|
||||
d_ptr(new KBreadcrumbSelectionModelPrivate(this, selectionModel, MakeBreadcrumbSelectionInSelf))
|
||||
{
|
||||
d_ptr->init();
|
||||
}
|
||||
|
||||
KBreadcrumbSelectionModel::KBreadcrumbSelectionModel(QItemSelectionModel *selectionModel, BreadcrumbTarget direction, QObject* parent)
|
||||
: QItemSelectionModel(const_cast<QAbstractItemModel *>(selectionModel->model()), parent),
|
||||
d_ptr(new KBreadcrumbSelectionModelPrivate(this, selectionModel, direction))
|
||||
{
|
||||
if ( direction != MakeBreadcrumbSelectionInSelf)
|
||||
connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
|
||||
this, SLOT(sourceSelectionChanged(QItemSelection,QItemSelection)));
|
||||
|
||||
d_ptr->init();
|
||||
}
|
||||
|
||||
KBreadcrumbSelectionModel::~KBreadcrumbSelectionModel()
|
||||
{
|
||||
delete d_ptr;
|
||||
}
|
||||
|
||||
bool KBreadcrumbSelectionModel::isActualSelectionIncluded() const
|
||||
{
|
||||
Q_D(const KBreadcrumbSelectionModel);
|
||||
return d->m_includeActualSelection;
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModel::setActualSelectionIncluded(bool includeActualSelection)
|
||||
{
|
||||
Q_D(KBreadcrumbSelectionModel);
|
||||
d->m_includeActualSelection = includeActualSelection;
|
||||
}
|
||||
|
||||
int KBreadcrumbSelectionModel::breadcrumbLength() const
|
||||
{
|
||||
Q_D(const KBreadcrumbSelectionModel);
|
||||
return d->m_selectionDepth;
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModel::setBreadcrumbLength(int breadcrumbLength)
|
||||
{
|
||||
Q_D(KBreadcrumbSelectionModel);
|
||||
d->m_selectionDepth = breadcrumbLength;
|
||||
}
|
||||
|
||||
QItemSelection KBreadcrumbSelectionModelPrivate::getBreadcrumbSelection(const QModelIndex& index)
|
||||
{
|
||||
QItemSelection breadcrumbSelection;
|
||||
|
||||
if (m_includeActualSelection)
|
||||
breadcrumbSelection.append(QItemSelectionRange(index));
|
||||
|
||||
QModelIndex parent = index.parent();
|
||||
int sumBreadcrumbs = 0;
|
||||
bool includeAll = m_selectionDepth < 0;
|
||||
while (parent.isValid() && (includeAll || sumBreadcrumbs < m_selectionDepth)) {
|
||||
breadcrumbSelection.append(QItemSelectionRange(parent));
|
||||
parent = parent.parent();
|
||||
}
|
||||
return breadcrumbSelection;
|
||||
}
|
||||
|
||||
QItemSelection KBreadcrumbSelectionModelPrivate::getBreadcrumbSelection(const QItemSelection& selection)
|
||||
{
|
||||
QItemSelection breadcrumbSelection;
|
||||
|
||||
if (m_includeActualSelection)
|
||||
breadcrumbSelection = selection;
|
||||
|
||||
foreach (const QItemSelectionRange it, selection)
|
||||
{
|
||||
QModelIndex parent = it.parent();
|
||||
|
||||
if (breadcrumbSelection.contains(parent))
|
||||
continue;
|
||||
|
||||
int sumBreadcrumbs = 0;
|
||||
bool includeAll = m_selectionDepth < 0;
|
||||
|
||||
while (parent.isValid() && (includeAll || sumBreadcrumbs < m_selectionDepth))
|
||||
{
|
||||
breadcrumbSelection.append(QItemSelectionRange(parent));
|
||||
parent = parent.parent();
|
||||
|
||||
if (breadcrumbSelection.contains(parent))
|
||||
break;
|
||||
|
||||
++sumBreadcrumbs;
|
||||
}
|
||||
}
|
||||
return breadcrumbSelection;
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModelPrivate::sourceSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected)
|
||||
{
|
||||
Q_Q(KBreadcrumbSelectionModel);
|
||||
QItemSelection deselectedCrumbs = getBreadcrumbSelection(deselected);
|
||||
QItemSelection selectedCrumbs = getBreadcrumbSelection(selected);
|
||||
|
||||
QItemSelection removed = deselectedCrumbs;
|
||||
foreach(const QItemSelectionRange &range, selectedCrumbs)
|
||||
{
|
||||
removed.removeAll(range);
|
||||
}
|
||||
|
||||
QItemSelection added = selectedCrumbs;
|
||||
foreach(const QItemSelectionRange &range, deselectedCrumbs)
|
||||
{
|
||||
added.removeAll(range);
|
||||
}
|
||||
|
||||
if (!removed.isEmpty())
|
||||
{
|
||||
q->QItemSelectionModel::select(removed, QItemSelectionModel::Deselect);
|
||||
}
|
||||
if (!added.isEmpty())
|
||||
{
|
||||
q->QItemSelectionModel::select(added, QItemSelectionModel::Select);
|
||||
}
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
|
||||
{
|
||||
Q_D(KBreadcrumbSelectionModel);
|
||||
// When an item is removed, the current index is set to the top index in the model.
|
||||
// That causes a selectionChanged signal with a selection which we do not want.
|
||||
if ( d->m_ignoreCurrentChanged )
|
||||
{
|
||||
d->m_ignoreCurrentChanged = false;
|
||||
return;
|
||||
}
|
||||
if ( d->m_direction == MakeBreadcrumbSelectionInOther )
|
||||
{
|
||||
d->m_selectionModel->select(d->getBreadcrumbSelection(index), command);
|
||||
QItemSelectionModel::select(index, command);
|
||||
} else {
|
||||
d->m_selectionModel->select(index, command);
|
||||
QItemSelectionModel::select(d->getBreadcrumbSelection(index), command);
|
||||
}
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
|
||||
{
|
||||
Q_D(KBreadcrumbSelectionModel);
|
||||
QItemSelection bcc = d->getBreadcrumbSelection(selection);
|
||||
if ( d->m_direction == MakeBreadcrumbSelectionInOther )
|
||||
{
|
||||
d->m_selectionModel->select(selection, command);
|
||||
QItemSelectionModel::select(bcc, command);
|
||||
} else {
|
||||
d->m_selectionModel->select(bcc, command);
|
||||
QItemSelectionModel::select(selection, command);
|
||||
}
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModelPrivate::init()
|
||||
{
|
||||
Q_Q(KBreadcrumbSelectionModel);
|
||||
q->connect(m_selectionModel->model(), SIGNAL(layoutChanged()), SLOT(syncBreadcrumbs()));
|
||||
q->connect(m_selectionModel->model(), SIGNAL(modelReset()), SLOT(syncBreadcrumbs()));
|
||||
q->connect(m_selectionModel->model(), SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), SLOT(syncBreadcrumbs()));
|
||||
// Don't need to handle insert & remove because they can't change the breadcrumbs on their own.
|
||||
}
|
||||
|
||||
void KBreadcrumbSelectionModelPrivate::syncBreadcrumbs()
|
||||
{
|
||||
Q_Q(KBreadcrumbSelectionModel);
|
||||
q->select(m_selectionModel->selection(), QItemSelectionModel::ClearAndSelect);
|
||||
}
|
||||
|
||||
|
||||
#include "moc_kbreadcrumbselectionmodel.cpp"
|
|
@ -1,163 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2010 Klarälvdalens Datakonsult AB,
|
||||
a KDAB Group company, info@kdab.net,
|
||||
author Stephen Kelly <stephen@kdab.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 Library General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KBREADCRUMBSPROXYMODEL_H
|
||||
#define KBREADCRUMBSPROXYMODEL_H
|
||||
|
||||
#include <QtGui/QItemSelectionModel>
|
||||
#include <QtCore/QAbstractItemModel>
|
||||
|
||||
#include "kdeui_export.h"
|
||||
|
||||
class KBreadcrumbSelectionModelPrivate;
|
||||
|
||||
/**
|
||||
@class KBreadcrumbSelectionModel kbreadcrumbselectionmodel.h
|
||||
|
||||
@brief Selects the parents of selected items to create breadcrumbs
|
||||
|
||||
For example, if the tree is
|
||||
@verbatim
|
||||
- A
|
||||
- B
|
||||
- - C
|
||||
- - D
|
||||
- - - E
|
||||
- - - - F
|
||||
@endverbatim
|
||||
|
||||
and E is selected, the selection can contain
|
||||
|
||||
@verbatim
|
||||
- B
|
||||
- D
|
||||
@endverbatim
|
||||
|
||||
or
|
||||
|
||||
@verbatim
|
||||
- B
|
||||
- D
|
||||
- E
|
||||
@endverbatim
|
||||
|
||||
if isActualSelectionIncluded is true.
|
||||
|
||||
The depth of the selection may also be set. For example if the breadcrumbLength is 1:
|
||||
|
||||
@verbatim
|
||||
- D
|
||||
- E
|
||||
@endverbatim
|
||||
|
||||
And if breadcrumbLength is 2:
|
||||
|
||||
@verbatim
|
||||
- B
|
||||
- D
|
||||
- E
|
||||
@endverbatim
|
||||
|
||||
A KBreadcrumbsProxyModel with a breadcrumbLength of 0 and including the actual selection is
|
||||
the same as a KSelectionProxyModel in the KSelectionProxyModel::ExactSelection configuration.
|
||||
|
||||
@code
|
||||
view1->setModel(rootModel);
|
||||
|
||||
QItemSelectionModel *breadcrumbSelectionModel = new QItemSelectionModel(rootModel, this);
|
||||
|
||||
KBreadcrumbSelectionModel *breadcrumbProxySelector = new KBreadcrumbSelectionModel(breadcrumbSelectionModel, rootModel, this);
|
||||
|
||||
view1->setSelectionModel(breadcrumbProxySelector);
|
||||
|
||||
KSelectionProxyModel *breadcrumbSelectionProxyModel = new KSelectionProxyModel( breadcrumbSelectionModel, this);
|
||||
breadcrumbSelectionProxyModel->setSourceModel( rootModel );
|
||||
breadcrumbSelectionProxyModel->setFilterBehavior( KSelectionProxyModel::ExactSelection );
|
||||
|
||||
view2->setModel(breadcrumbSelectionProxyModel);
|
||||
@endcode
|
||||
|
||||
@image html kbreadcrumbselectionmodel.png "KBreadcrumbSelectionModel in several configurations"
|
||||
|
||||
This can work in two directions. One option is for a single selection in the KBreadcrumbSelectionModel to invoke
|
||||
the breadcrumb selection in its constructor argument.
|
||||
|
||||
The other is for a selection in the itemselectionmodel in the constructor argument to cause a breadcrumb selection
|
||||
in @p this.
|
||||
|
||||
@since 4.5
|
||||
|
||||
*/
|
||||
class KDEUI_EXPORT KBreadcrumbSelectionModel : public QItemSelectionModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum BreadcrumbTarget
|
||||
{
|
||||
MakeBreadcrumbSelectionInOther,
|
||||
MakeBreadcrumbSelectionInSelf
|
||||
};
|
||||
|
||||
explicit KBreadcrumbSelectionModel(QItemSelectionModel *selectionModel, QObject* parent = 0);
|
||||
KBreadcrumbSelectionModel(QItemSelectionModel *selectionModel, BreadcrumbTarget target, QObject* parent = 0);
|
||||
virtual ~KBreadcrumbSelectionModel();
|
||||
|
||||
/**
|
||||
Returns whether the actual selection in included in the proxy.
|
||||
|
||||
The default is true.
|
||||
*/
|
||||
bool isActualSelectionIncluded() const;
|
||||
|
||||
/**
|
||||
Set whether the actual selection in included in the proxy to @p isActualSelectionIncluded.
|
||||
*/
|
||||
void setActualSelectionIncluded(bool isActualSelectionIncluded);
|
||||
|
||||
/**
|
||||
Returns the depth that the breadcrumb selection should go to.
|
||||
*/
|
||||
int breadcrumbLength() const;
|
||||
|
||||
/**
|
||||
Sets the depth that the breadcrumb selection should go to.
|
||||
|
||||
If the @p breadcrumbLength is -1, all breadcrumbs are selected.
|
||||
The default is -1
|
||||
*/
|
||||
void setBreadcrumbLength(int breadcrumbLength);
|
||||
|
||||
/* reimp */ void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command);
|
||||
|
||||
/* reimp */ void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command);
|
||||
|
||||
protected:
|
||||
KBreadcrumbSelectionModelPrivate * const d_ptr;
|
||||
private:
|
||||
//@cond PRIVATE
|
||||
Q_DECLARE_PRIVATE(KBreadcrumbSelectionModel)
|
||||
Q_PRIVATE_SLOT( d_func(),void sourceSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected))
|
||||
Q_PRIVATE_SLOT( d_func(),void syncBreadcrumbs())
|
||||
//@cond PRIVATE
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -1,136 +0,0 @@
|
|||
/*
|
||||
This file is part of KDE.
|
||||
|
||||
Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "kcheckableproxymodel.h"
|
||||
|
||||
#include <QItemSelectionModel>
|
||||
|
||||
class KCheckableProxyModelPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(KCheckableProxyModel)
|
||||
KCheckableProxyModel *q_ptr;
|
||||
|
||||
KCheckableProxyModelPrivate(KCheckableProxyModel *checkableModel)
|
||||
: q_ptr(checkableModel),
|
||||
m_itemSelectionModel(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QItemSelectionModel *m_itemSelectionModel;
|
||||
|
||||
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
||||
|
||||
};
|
||||
|
||||
KCheckableProxyModel::KCheckableProxyModel(QObject* parent)
|
||||
: KIdentityProxyModel(parent), d_ptr(new KCheckableProxyModelPrivate(this))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KCheckableProxyModel::~KCheckableProxyModel()
|
||||
{
|
||||
delete d_ptr;
|
||||
}
|
||||
|
||||
void KCheckableProxyModel::setSelectionModel(QItemSelectionModel* itemSelectionModel)
|
||||
{
|
||||
Q_D(KCheckableProxyModel);
|
||||
d->m_itemSelectionModel = itemSelectionModel;
|
||||
Q_ASSERT(sourceModel() ? d->m_itemSelectionModel->model() == sourceModel() : true);
|
||||
connect(itemSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(selectionChanged(QItemSelection,QItemSelection)));
|
||||
}
|
||||
|
||||
QItemSelectionModel *KCheckableProxyModel::selectionModel() const
|
||||
{
|
||||
Q_D(const KCheckableProxyModel);
|
||||
return d->m_itemSelectionModel;
|
||||
}
|
||||
|
||||
Qt::ItemFlags KCheckableProxyModel::flags(const QModelIndex& index) const
|
||||
{
|
||||
if (!index.isValid() || index.column() != 0)
|
||||
return KIdentityProxyModel::flags(index);
|
||||
return KIdentityProxyModel::flags(index) | Qt::ItemIsUserCheckable;
|
||||
}
|
||||
|
||||
QVariant KCheckableProxyModel::data(const QModelIndex& index, int role) const
|
||||
{
|
||||
Q_D(const KCheckableProxyModel);
|
||||
|
||||
if (role == Qt::CheckStateRole)
|
||||
{
|
||||
if (index.column() != 0)
|
||||
return QVariant();
|
||||
if (!d->m_itemSelectionModel)
|
||||
return Qt::Unchecked;
|
||||
|
||||
return d->m_itemSelectionModel->selection().contains(mapToSource(index)) ? Qt::Checked : Qt::Unchecked;
|
||||
}
|
||||
return KIdentityProxyModel::data(index, role);
|
||||
}
|
||||
|
||||
bool KCheckableProxyModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
||||
{
|
||||
Q_D(KCheckableProxyModel);
|
||||
if (role == Qt::CheckStateRole)
|
||||
{
|
||||
if (index.column() != 0)
|
||||
return false;
|
||||
if (!d->m_itemSelectionModel)
|
||||
return false;
|
||||
|
||||
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
|
||||
const QModelIndex srcIndex = mapToSource(index);
|
||||
bool result = select(QItemSelection(srcIndex, srcIndex), state == Qt::Checked ? QItemSelectionModel::Select : QItemSelectionModel::Deselect);
|
||||
emit dataChanged(index, index);
|
||||
return result;
|
||||
}
|
||||
return KIdentityProxyModel::setData(index, value, role);
|
||||
}
|
||||
|
||||
void KCheckableProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
|
||||
{
|
||||
KIdentityProxyModel::setSourceModel(sourceModel);
|
||||
Q_ASSERT(d_ptr->m_itemSelectionModel ? d_ptr->m_itemSelectionModel->model() == sourceModel : true);
|
||||
}
|
||||
|
||||
void KCheckableProxyModelPrivate::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
|
||||
{
|
||||
Q_Q(KCheckableProxyModel);
|
||||
foreach (const QItemSelectionRange &range, q->mapSelectionFromSource(selected))
|
||||
q->dataChanged(range.topLeft(), range.bottomRight());
|
||||
foreach (const QItemSelectionRange &range, q->mapSelectionFromSource(deselected))
|
||||
q->dataChanged(range.topLeft(), range.bottomRight());
|
||||
}
|
||||
|
||||
bool KCheckableProxyModel::select(const QItemSelection& selection, QItemSelectionModel::SelectionFlags command)
|
||||
{
|
||||
Q_D(KCheckableProxyModel);
|
||||
d->m_itemSelectionModel->select(selection, command);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#include "moc_kcheckableproxymodel.cpp"
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
/*
|
||||
This file is part of Akonadi.
|
||||
|
||||
Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA.
|
||||
*/
|
||||
|
||||
#ifndef KCHECKABLEPROXYMODEL_H
|
||||
#define KCHECKABLEPROXYMODEL_H
|
||||
|
||||
#include "kidentityproxymodel.h"
|
||||
|
||||
#include "kdeui_export.h"
|
||||
|
||||
#include <QtGui/qitemselectionmodel.h>
|
||||
|
||||
class KCheckableProxyModelPrivate;
|
||||
|
||||
/**
|
||||
* @brief Adds a checkable capability to a source model
|
||||
*
|
||||
* Items is standard Qt views such as QTreeView and QListView can have a
|
||||
* checkable capability and draw checkboxes. Adding such a capability
|
||||
* requires specific implementations of the data() and flags() virtual methods.
|
||||
* This class implements those methods generically so that it is not necessary to
|
||||
* implement them in your model.
|
||||
*
|
||||
* This can be combined with a KSelectionProxyModel showing the items currently selected
|
||||
*
|
||||
* @code
|
||||
*
|
||||
* QItemSelectionModel *checkModel = new QItemSelectionModel(rootModel, this);
|
||||
* KCheckableProxyModel *checkable = new KCheckableProxyModel(this);
|
||||
* checkable->setSourceModel(rootModel);
|
||||
* checkable->setSelectionModel(checkModel);
|
||||
*
|
||||
* QTreeView *tree1 = new QTreeView(vSplitter);
|
||||
* tree1->setModel(checkable);
|
||||
* tree1->expandAll();
|
||||
*
|
||||
* KSelectionProxyModel *selectionProxy = new KSelectionProxyModel(checkModel, this);
|
||||
* selectionProxy->setFilterBehavior(KSelectionProxyModel::ExactSelection);
|
||||
* selectionProxy->setSourceModel(rootModel);
|
||||
*
|
||||
* QTreeView *tree2 = new QTreeView(vSplitter);
|
||||
* tree2->setModel(selectionProxy);
|
||||
* @endcode
|
||||
*
|
||||
* @image html kcheckableproxymodel.png "A KCheckableProxyModel and KSelectionProxyModel showing checked items"
|
||||
*
|
||||
* @since 4.6
|
||||
* @author Stephen Kelly <steveire@gmail.com>
|
||||
*/
|
||||
class KDEUI_EXPORT KCheckableProxyModel : public KIdentityProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
KCheckableProxyModel(QObject* parent = 0);
|
||||
~KCheckableProxyModel();
|
||||
|
||||
void setSelectionModel(QItemSelectionModel *itemSelectionModel);
|
||||
QItemSelectionModel *selectionModel() const;
|
||||
|
||||
/* reimp */ Qt::ItemFlags flags(const QModelIndex& index) const;
|
||||
|
||||
/* reimp */ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
|
||||
|
||||
/* reimp */ bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
|
||||
|
||||
/* reimp */ void setSourceModel(QAbstractItemModel* sourceModel);
|
||||
|
||||
protected:
|
||||
virtual bool select( const QItemSelection &selection, QItemSelectionModel::SelectionFlags command );
|
||||
|
||||
private:
|
||||
Q_DECLARE_PRIVATE(KCheckableProxyModel )
|
||||
KCheckableProxyModelPrivate * const d_ptr;
|
||||
|
||||
Q_PRIVATE_SLOT(d_func(), void selectionChanged(const QItemSelection &, const QItemSelection &) )
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -1,757 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2010 Klarälvdalens Datakonsult AB,
|
||||
a KDAB Group company, info@kdab.net,
|
||||
author Stephen Kelly <stephen@kdab.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 Library General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "kidentityproxymodel.h"
|
||||
|
||||
#include <QtGui/qitemselectionmodel.h>
|
||||
#include <QtCore/QStringList>
|
||||
#include <kdebug.h>
|
||||
|
||||
class KIdentityProxyModelPrivate
|
||||
{
|
||||
KIdentityProxyModelPrivate(KIdentityProxyModel *qq)
|
||||
: q_ptr(qq)
|
||||
// ignoreNextLayoutAboutToBeChanged(false),
|
||||
// ignoreNextLayoutChanged(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Q_DECLARE_PUBLIC(KIdentityProxyModel)
|
||||
KIdentityProxyModel * const q_ptr;
|
||||
|
||||
// bool ignoreNextLayoutAboutToBeChanged;
|
||||
// bool ignoreNextLayoutChanged;
|
||||
QList<QPersistentModelIndex> layoutChangePersistentIndexes;
|
||||
QModelIndexList proxyIndexes;
|
||||
|
||||
void _k_sourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceRowsInserted(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceRowsRemoved(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceRowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest);
|
||||
void _k_sourceRowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest);
|
||||
|
||||
void _k_sourceColumnsAboutToBeInserted(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceColumnsInserted(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceColumnsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceColumnsRemoved(const QModelIndex &parent, int start, int end);
|
||||
void _k_sourceColumnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest);
|
||||
void _k_sourceColumnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest);
|
||||
|
||||
void _k_sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
|
||||
void _k_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last);
|
||||
|
||||
void _k_sourceLayoutAboutToBeChanged();
|
||||
void _k_sourceLayoutChanged();
|
||||
// void _k_sourceChildrenLayoutsAboutToBeChanged(const QModelIndex &parent1, const QModelIndex &parent2);
|
||||
// void _k_sourceChildrenLayoutsChanged(const QModelIndex &parent1, const QModelIndex &parent2);
|
||||
void _k_sourceModelAboutToBeReset();
|
||||
void _k_sourceModelReset();
|
||||
void _k_sourceModelDestroyed();
|
||||
|
||||
};
|
||||
|
||||
/*!
|
||||
\since 4.6
|
||||
\class KIdentityProxyModel
|
||||
\brief The KIdentityProxyModel class proxies its source model unmodified
|
||||
|
||||
\ingroup model-view
|
||||
|
||||
KIdentityProxyModel can be used to forward the structure of a source model exactly, with no sorting, filtering or other transformation.
|
||||
This is similar in concept to an identity matrix where A.I = A.
|
||||
|
||||
Because it does no sorting or filtering, this class is most suitable to proxy models which transform the data() of the source model.
|
||||
For example, a proxy model could be created to define the font used, or the background colour, or the tooltip etc. This removes the
|
||||
need to implement all data handling in the same class that creates the structure of the model, and can also be used to create
|
||||
re-usable components.
|
||||
|
||||
This also provides a way to change the data in the case where a source model is supplied by a third party which can not be modified.
|
||||
|
||||
\code
|
||||
class DateFormatProxyModel : public KIdentityProxyModel
|
||||
{
|
||||
// ...
|
||||
|
||||
void setDateFormatString(const QString &formatString)
|
||||
{
|
||||
m_formatString = formatString;
|
||||
}
|
||||
|
||||
QVariant data(const QModelIndex &index, int role)
|
||||
{
|
||||
if (role != Qt::DisplayRole)
|
||||
return KIdentityProxyModel::data(index, role);
|
||||
|
||||
const QDateTime dateTime = sourceModel()->data(SourceClass::DateRole).toDateTime();
|
||||
|
||||
return dateTime.toString(m_formatString);
|
||||
}
|
||||
|
||||
private:
|
||||
QString m_formatString;
|
||||
};
|
||||
\endcode
|
||||
|
||||
\since 4.6
|
||||
\author Stephen Kelly <stephen@kdab.com>
|
||||
|
||||
*/
|
||||
|
||||
/*!
|
||||
Constructs an identity model with the given \a parent.
|
||||
*/
|
||||
KIdentityProxyModel::KIdentityProxyModel(QObject* parent)
|
||||
: QAbstractProxyModel(parent), d_ptr(new KIdentityProxyModelPrivate(this))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*! \internal
|
||||
*/
|
||||
KIdentityProxyModel::KIdentityProxyModel(KIdentityProxyModelPrivate* privateClass, QObject* parent)
|
||||
: QAbstractProxyModel(parent), d_ptr(privateClass)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
Destroys this identity model.
|
||||
*/
|
||||
KIdentityProxyModel::~KIdentityProxyModel()
|
||||
{
|
||||
delete d_ptr;
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::canFetchMore(const QModelIndex& parent) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return 0;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->canFetchMore(mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\\reimp
|
||||
*/
|
||||
int KIdentityProxyModel::columnCount(const QModelIndex& parent) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return 0;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->columnCount(mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
void KIdentityProxyModel::fetchMore(const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
sourceModel()->fetchMore(mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return false;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->dropMimeData(data, action, row, column, mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QModelIndex KIdentityProxyModel::index(int row, int column, const QModelIndex& parent) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return QModelIndex();
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
const QModelIndex sourceParent = mapToSource(parent);
|
||||
const QModelIndex sourceIndex = sourceModel()->index(row, column, sourceParent);
|
||||
return mapFromSource(sourceIndex);
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::insertColumns(int column, int count, const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return false;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->insertColumns(column, count, mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::insertRows(int row, int count, const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return false;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->insertRows(row, count, mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QModelIndex KIdentityProxyModel::mapFromSource(const QModelIndex& sourceIndex) const
|
||||
{
|
||||
if (!sourceModel() || !sourceIndex.isValid())
|
||||
return QModelIndex();
|
||||
|
||||
Q_ASSERT(sourceIndex.model() == sourceModel());
|
||||
return createIndex(sourceIndex.row(), sourceIndex.column(), sourceIndex.internalPointer());
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QItemSelection KIdentityProxyModel::mapSelectionFromSource(const QItemSelection& selection) const
|
||||
{
|
||||
QItemSelection proxySelection;
|
||||
|
||||
if (!sourceModel())
|
||||
return proxySelection;
|
||||
|
||||
QItemSelection::const_iterator it = selection.constBegin();
|
||||
const QItemSelection::const_iterator end = selection.constEnd();
|
||||
for ( ; it != end; ++it) {
|
||||
Q_ASSERT(it->model() == sourceModel());
|
||||
const QItemSelectionRange range(mapFromSource(it->topLeft()), mapFromSource(it->bottomRight()));
|
||||
proxySelection.append(range);
|
||||
}
|
||||
|
||||
return proxySelection;
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QItemSelection KIdentityProxyModel::mapSelectionToSource(const QItemSelection& selection) const
|
||||
{
|
||||
QItemSelection sourceSelection;
|
||||
|
||||
if (!sourceModel())
|
||||
return sourceSelection;
|
||||
|
||||
QItemSelection::const_iterator it = selection.constBegin();
|
||||
const QItemSelection::const_iterator end = selection.constEnd();
|
||||
for ( ; it != end; ++it) {
|
||||
Q_ASSERT(it->model() == this);
|
||||
const QItemSelectionRange range(mapToSource(it->topLeft()), mapToSource(it->bottomRight()));
|
||||
sourceSelection.append(range);
|
||||
}
|
||||
|
||||
return sourceSelection;
|
||||
}
|
||||
|
||||
struct SourceModelIndex
|
||||
{
|
||||
SourceModelIndex(int _r, int _c, void *_p, QAbstractItemModel *_m)
|
||||
: r(_r), c(_c), p(_p), m(_m)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
operator QModelIndex() { return reinterpret_cast<QModelIndex&>(*this); }
|
||||
|
||||
int r, c;
|
||||
void *p;
|
||||
const QAbstractItemModel *m;
|
||||
};
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QModelIndex KIdentityProxyModel::mapToSource(const QModelIndex& proxyIndex) const
|
||||
{
|
||||
if (!sourceModel() || !proxyIndex.isValid())
|
||||
return QModelIndex();
|
||||
Q_ASSERT(proxyIndex.model() == this);
|
||||
return SourceModelIndex(proxyIndex.row(), proxyIndex.column(), proxyIndex.internalPointer(), sourceModel());
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QModelIndexList KIdentityProxyModel::match(const QModelIndex& start, int role, const QVariant& value, int hits, Qt::MatchFlags flags) const
|
||||
{
|
||||
Q_ASSERT(start.isValid() ? start.model() == this : true);
|
||||
if (!sourceModel())
|
||||
return QModelIndexList();
|
||||
|
||||
const QModelIndexList sourceList = sourceModel()->match(mapToSource(start), role, value, hits, flags);
|
||||
QModelIndexList::const_iterator it = sourceList.constBegin();
|
||||
const QModelIndexList::const_iterator end = sourceList.constEnd();
|
||||
QModelIndexList proxyList;
|
||||
for ( ; it != end; ++it)
|
||||
proxyList.append(mapFromSource(*it));
|
||||
return proxyList;
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
QStringList KIdentityProxyModel::mimeTypes() const
|
||||
{
|
||||
if (sourceModel())
|
||||
return sourceModel()->mimeTypes();
|
||||
else
|
||||
return QAbstractProxyModel::mimeTypes();
|
||||
}
|
||||
|
||||
QMimeData* KIdentityProxyModel::mimeData(const QModelIndexList& indexes) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return QAbstractProxyModel::mimeData(indexes);
|
||||
|
||||
QModelIndexList proxyIndexes;
|
||||
foreach(const QModelIndex &index, indexes)
|
||||
proxyIndexes.append(mapToSource(index));
|
||||
|
||||
return sourceModel()->mimeData(proxyIndexes);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\\reimp
|
||||
*/
|
||||
QModelIndex KIdentityProxyModel::parent(const QModelIndex& child) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return QModelIndex();
|
||||
|
||||
Q_ASSERT(child.isValid() ? child.model() == this : true);
|
||||
const QModelIndex sourceIndex = mapToSource(child);
|
||||
const QModelIndex sourceParent = sourceIndex.parent();
|
||||
return mapFromSource(sourceParent);
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::removeColumns(int column, int count, const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return false;
|
||||
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->removeColumns(column, count, mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
bool KIdentityProxyModel::removeRows(int row, int count, const QModelIndex& parent)
|
||||
{
|
||||
if (!sourceModel())
|
||||
return false;
|
||||
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->removeRows(row, count, mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
int KIdentityProxyModel::rowCount(const QModelIndex& parent) const
|
||||
{
|
||||
if (!sourceModel())
|
||||
return 0;
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
|
||||
return sourceModel()->rowCount(mapToSource(parent));
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
void KIdentityProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
|
||||
{
|
||||
beginResetModel();
|
||||
|
||||
if (sourceModel) {
|
||||
disconnect(sourceModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceRowsAboutToBeInserted(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceRowsInserted(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceRowsAboutToBeRemoved(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceRowsRemoved(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
this, SLOT(_k_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
disconnect(sourceModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
this, SLOT(_k_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceColumnsAboutToBeInserted(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsInserted(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceColumnsInserted(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceColumnsAboutToBeRemoved(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(_k_sourceColumnsRemoved(QModelIndex,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
this, SLOT(_k_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
disconnect(sourceModel, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
this, SLOT(_k_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
disconnect(sourceModel, SIGNAL(modelAboutToBeReset()),
|
||||
this, SLOT(_k_sourceModelAboutToBeReset()));
|
||||
// disconnect(sourceModel, SIGNAL(internalDataReset()),
|
||||
// this, SLOT(resetInternalData()));
|
||||
disconnect(sourceModel, SIGNAL(modelReset()),
|
||||
this, SLOT(_k_sourceModelReset()));
|
||||
disconnect(sourceModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
|
||||
this, SLOT(_k_sourceDataChanged(QModelIndex,QModelIndex)));
|
||||
disconnect(sourceModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
|
||||
this, SLOT(_k_sourceHeaderDataChanged(Qt::Orientation,int,int)));
|
||||
disconnect(sourceModel, SIGNAL(layoutAboutToBeChanged()),
|
||||
this, SLOT(_k_sourceLayoutAboutToBeChanged()));
|
||||
disconnect(sourceModel, SIGNAL(layoutChanged()),
|
||||
this, SLOT(_k_sourceLayoutChanged()));
|
||||
// disconnect(sourceModel, SIGNAL(childrenLayoutsAboutToBeChanged(QModelIndex,QModelIndex)),
|
||||
// this, SLOT(_k_sourceChildrenLayoutsAboutToBeChanged(QModelIndex,QModelIndex)));
|
||||
// disconnect(sourceModel, SIGNAL(childrenLayoutsChanged(QModelIndex,QModelIndex)),
|
||||
// this, SLOT(_k_sourceChildrenLayoutsChanged(QModelIndex,QModelIndex)));
|
||||
disconnect(sourceModel, SIGNAL(destroyed()),
|
||||
this, SLOT(_k_sourceModelDestroyed()));
|
||||
}
|
||||
|
||||
QAbstractProxyModel::setSourceModel(sourceModel);
|
||||
|
||||
if (sourceModel) {
|
||||
connect(sourceModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceRowsAboutToBeInserted(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceRowsInserted(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceRowsAboutToBeRemoved(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceRowsRemoved(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
SLOT(_k_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
connect(sourceModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
SLOT(_k_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
connect(sourceModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceColumnsAboutToBeInserted(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(columnsInserted(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceColumnsInserted(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceColumnsAboutToBeRemoved(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
|
||||
SLOT(_k_sourceColumnsRemoved(QModelIndex,int,int)));
|
||||
connect(sourceModel, SIGNAL(columnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
SLOT(_k_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
connect(sourceModel, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)),
|
||||
SLOT(_k_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)));
|
||||
connect(sourceModel, SIGNAL(modelAboutToBeReset()),
|
||||
SLOT(_k_sourceModelAboutToBeReset()));
|
||||
// connect(sourceModel, SIGNAL(internalDataReset()),
|
||||
// SLOT(resetInternalData()));
|
||||
connect(sourceModel, SIGNAL(modelReset()),
|
||||
SLOT(_k_sourceModelReset()));
|
||||
connect(sourceModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
|
||||
SLOT(_k_sourceDataChanged(QModelIndex,QModelIndex)));
|
||||
connect(sourceModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
|
||||
SLOT(_k_sourceHeaderDataChanged(Qt::Orientation,int,int)));
|
||||
connect(sourceModel, SIGNAL(layoutAboutToBeChanged()),
|
||||
SLOT(_k_sourceLayoutAboutToBeChanged()));
|
||||
connect(sourceModel, SIGNAL(layoutChanged()),
|
||||
SLOT(_k_sourceLayoutChanged()));
|
||||
// Hopefully this will be in Qt4.8
|
||||
// connect(sourceModel, SIGNAL(childrenLayoutsAboutToBeChanged(QModelIndex,QModelIndex)),
|
||||
// SLOT(_k_sourceChildrenLayoutsAboutToBeChanged(QModelIndex,QModelIndex)));
|
||||
// connect(sourceModel, SIGNAL(childrenLayoutsChanged(QModelIndex,QModelIndex)),
|
||||
// SLOT(_k_sourceChildrenLayoutsChanged(QModelIndex,QModelIndex)));
|
||||
connect(sourceModel, SIGNAL(destroyed()),
|
||||
SLOT(_k_sourceModelDestroyed()));
|
||||
}
|
||||
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
Qt::DropActions KIdentityProxyModel::supportedDropActions() const
|
||||
{
|
||||
if (sourceModel())
|
||||
return sourceModel()->supportedDropActions();
|
||||
else
|
||||
return QAbstractProxyModel::supportedDropActions();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsAboutToBeInserted(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
q->beginInsertColumns(q->mapFromSource(parent), start, end);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(destParent.isValid() ? destParent.model() == q->sourceModel() : true);
|
||||
q->beginMoveColumns(q->mapFromSource(sourceParent), sourceStart, sourceEnd, q->mapFromSource(destParent), dest);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
q->beginRemoveColumns(q->mapFromSource(parent), start, end);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsInserted(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(parent)
|
||||
Q_UNUSED(start)
|
||||
Q_UNUSED(end)
|
||||
q->endInsertColumns();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(destParent.isValid() ? destParent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(sourceParent)
|
||||
Q_UNUSED(sourceStart)
|
||||
Q_UNUSED(sourceEnd)
|
||||
Q_UNUSED(destParent)
|
||||
Q_UNUSED(dest)
|
||||
q->endMoveColumns();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceColumnsRemoved(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(parent)
|
||||
Q_UNUSED(start)
|
||||
Q_UNUSED(end)
|
||||
q->endRemoveColumns();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(topLeft.model() == q->sourceModel());
|
||||
Q_ASSERT(bottomRight.model() == q->sourceModel());
|
||||
q->dataChanged(q->mapFromSource(topLeft), q->mapFromSource(bottomRight));
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
q->headerDataChanged(orientation, first, last);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceLayoutAboutToBeChanged()
|
||||
{
|
||||
//if (ignoreNextLayoutAboutToBeChanged)
|
||||
// return;
|
||||
|
||||
Q_Q(KIdentityProxyModel);
|
||||
|
||||
q->layoutAboutToBeChanged();
|
||||
|
||||
Q_FOREACH(const QModelIndex &proxyPersistentIndex, q->persistentIndexList()) {
|
||||
Q_ASSERT(proxyPersistentIndex.isValid());
|
||||
const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
|
||||
if (!srcPersistentIndex.isValid()) // can happen with extra columns, e.g. KPIM::StatisticsProxyModel
|
||||
continue;
|
||||
proxyIndexes << proxyPersistentIndex;
|
||||
layoutChangePersistentIndexes << srcPersistentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceLayoutChanged()
|
||||
{
|
||||
//if (ignoreNextLayoutChanged)
|
||||
// return;
|
||||
|
||||
Q_Q(KIdentityProxyModel);
|
||||
|
||||
for (int i = 0; i < proxyIndexes.size(); ++i) {
|
||||
const QModelIndex oldProxyIndex = proxyIndexes.at(i);
|
||||
const QModelIndex newProxyIndex = q->mapFromSource(layoutChangePersistentIndexes.at(i));
|
||||
if (oldProxyIndex != newProxyIndex)
|
||||
q->changePersistentIndex(oldProxyIndex, newProxyIndex);
|
||||
}
|
||||
|
||||
layoutChangePersistentIndexes.clear();
|
||||
proxyIndexes.clear();
|
||||
|
||||
q->layoutChanged();
|
||||
}
|
||||
|
||||
#if 0 // this code was for the stuff that never went into Qt-4.8. We are keeping it for the Qt5 QIPM sourceLayoutChanged(QModelIndex) future code.
|
||||
void KIdentityProxyModelPrivate::_k_sourceChildrenLayoutsAboutToBeChanged(const QModelIndex &parent1, const QModelIndex &parent2)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent1.isValid() ? parent1.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(parent2.isValid() ? parent2.model() == q->sourceModel() : true);
|
||||
|
||||
|
||||
ignoreNextLayoutAboutToBeChanged = true;
|
||||
|
||||
const QModelIndex proxyParent1 = q->mapFromSource(parent1);
|
||||
const QModelIndex proxyParent2 = q->mapFromSource(parent2);
|
||||
//emit q->childrenLayoutsAboutToBeChanged(proxyParent1, proxyParent2);
|
||||
emit q->layoutAboutToBeChanged();
|
||||
|
||||
if (q->persistentIndexList().isEmpty())
|
||||
return;
|
||||
|
||||
Q_FOREACH(const QModelIndex &proxyPersistentIndex, q->persistentIndexList()) {
|
||||
const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
|
||||
Q_ASSERT(proxyPersistentIndex.isValid());
|
||||
Q_ASSERT(srcPersistentIndex.isValid());
|
||||
const QModelIndex idxParent = srcPersistentIndex.parent();
|
||||
if (idxParent != parent1 && idxParent != parent2)
|
||||
continue;
|
||||
proxyIndexes << proxyPersistentIndex;
|
||||
layoutChangePersistentIndexes << srcPersistentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceChildrenLayoutsChanged(const QModelIndex &parent1, const QModelIndex &parent2)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent1.isValid() ? parent1.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(parent2.isValid() ? parent2.model() == q->sourceModel() : true);
|
||||
|
||||
ignoreNextLayoutChanged = true;
|
||||
|
||||
QModelIndexList oldList, newList;
|
||||
for( int i = 0; i < layoutChangePersistentIndexes.size(); ++i) {
|
||||
const QModelIndex srcIdx = layoutChangePersistentIndexes.at(i);
|
||||
const QModelIndex oldProxyIdx = proxyIndexes.at(i);
|
||||
oldList << oldProxyIdx;
|
||||
newList << q->mapFromSource(srcIdx);
|
||||
}
|
||||
q->changePersistentIndexList(oldList, newList);
|
||||
layoutChangePersistentIndexes.clear();
|
||||
proxyIndexes.clear();
|
||||
|
||||
const QModelIndex proxyParent1 = q->mapFromSource(parent1);
|
||||
const QModelIndex proxyParent2 = q->mapFromSource(parent2);
|
||||
// emit q->childrenLayoutsChanged(proxyParent1, proxyParent2);
|
||||
emit q->layoutChanged();
|
||||
}
|
||||
#endif
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceModelAboutToBeReset()
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
q->beginResetModel();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceModelReset()
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
q->endResetModel();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceModelDestroyed()
|
||||
{
|
||||
// Q_Q(KIdentityProxyModel);
|
||||
// q->endResetModel();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
q->beginInsertRows(q->mapFromSource(parent), start, end);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(destParent.isValid() ? destParent.model() == q->sourceModel() : true);
|
||||
q->beginMoveRows(q->mapFromSource(sourceParent), sourceStart, sourceEnd, q->mapFromSource(destParent), dest);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
q->beginRemoveRows(q->mapFromSource(parent), start, end);
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsInserted(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(parent)
|
||||
Q_UNUSED(start)
|
||||
Q_UNUSED(end)
|
||||
q->endInsertRows();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == q->sourceModel() : true);
|
||||
Q_ASSERT(destParent.isValid() ? destParent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(sourceParent)
|
||||
Q_UNUSED(sourceStart)
|
||||
Q_UNUSED(sourceEnd)
|
||||
Q_UNUSED(destParent)
|
||||
Q_UNUSED(dest)
|
||||
q->endMoveRows();
|
||||
}
|
||||
|
||||
void KIdentityProxyModelPrivate::_k_sourceRowsRemoved(const QModelIndex &parent, int start, int end)
|
||||
{
|
||||
Q_Q(KIdentityProxyModel);
|
||||
Q_ASSERT(parent.isValid() ? parent.model() == q->sourceModel() : true);
|
||||
Q_UNUSED(parent)
|
||||
Q_UNUSED(start)
|
||||
Q_UNUSED(end)
|
||||
q->endRemoveRows();
|
||||
}
|
||||
|
||||
/*!
|
||||
This slot is automatically invoked when the model is reset. It can be used to clear any data internal to the proxy at the appropriate time.
|
||||
|
||||
\sa QAbstractItemModel::internalDataReset()
|
||||
*/
|
||||
void KIdentityProxyModel::resetInternalData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#include "moc_kidentityproxymodel.cpp"
|
|
@ -1,99 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2010 Klarälvdalens Datakonsult AB,
|
||||
a KDAB Group company, info@kdab.net,
|
||||
author Stephen Kelly <stephen@kdab.com>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 Library General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KIDENTITYPROXYMODEL_H
|
||||
#define KIDENTITYPROXYMODEL_H
|
||||
|
||||
#include <QtGui/QAbstractProxyModel>
|
||||
|
||||
#include "kdeui_export.h"
|
||||
|
||||
class KIdentityProxyModelPrivate;
|
||||
|
||||
class KDEUI_EXPORT KIdentityProxyModel : public QAbstractProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit KIdentityProxyModel(QObject* parent = 0);
|
||||
virtual ~KIdentityProxyModel();
|
||||
|
||||
int columnCount(const QModelIndex& parent = QModelIndex()) const;
|
||||
QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;
|
||||
QModelIndex mapFromSource(const QModelIndex& sourceIndex) const;
|
||||
QModelIndex mapToSource(const QModelIndex& proxyIndex) const;
|
||||
QModelIndex parent(const QModelIndex& child) const;
|
||||
int rowCount(const QModelIndex& parent = QModelIndex()) const;
|
||||
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
|
||||
|
||||
QItemSelection mapSelectionFromSource(const QItemSelection& selection) const;
|
||||
QItemSelection mapSelectionToSource(const QItemSelection& selection) const;
|
||||
QModelIndexList match(const QModelIndex& start, int role, const QVariant& value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const;
|
||||
void setSourceModel(QAbstractItemModel* sourceModel);
|
||||
|
||||
bool insertColumns(int column, int count, const QModelIndex& parent = QModelIndex());
|
||||
bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex());
|
||||
bool removeColumns(int column, int count, const QModelIndex& parent = QModelIndex());
|
||||
bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex());
|
||||
|
||||
virtual bool canFetchMore(const QModelIndex& parent) const;
|
||||
virtual void fetchMore(const QModelIndex& parent);
|
||||
virtual QStringList mimeTypes() const;
|
||||
virtual QMimeData* mimeData(const QModelIndexList& indexes) const;
|
||||
virtual Qt::DropActions supportedDropActions() const;
|
||||
|
||||
protected:
|
||||
KIdentityProxyModel(KIdentityProxyModelPrivate *privateClass, QObject* parent);
|
||||
KIdentityProxyModelPrivate * const d_ptr;
|
||||
|
||||
protected Q_SLOTS:
|
||||
virtual void resetInternalData();
|
||||
|
||||
private:
|
||||
Q_DECLARE_PRIVATE(KIdentityProxyModel)
|
||||
Q_DISABLE_COPY(KIdentityProxyModel)
|
||||
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsAboutToBeInserted(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsInserted(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsAboutToBeRemoved(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsRemoved(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int))
|
||||
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsAboutToBeInserted(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsInserted(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsAboutToBeRemoved(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsRemoved(QModelIndex,int,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int))
|
||||
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceDataChanged(QModelIndex,QModelIndex))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last))
|
||||
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceLayoutAboutToBeChanged())
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceLayoutChanged())
|
||||
// Q_PRIVATE_SLOT(d_func(), void _k_sourceChildrenLayoutsAboutToBeChanged(const QModelIndex &parent1, const QModelIndex &parent2))
|
||||
// Q_PRIVATE_SLOT(d_func(), void _k_sourceChildrenLayoutsChanged(const QModelIndex &parent1, const QModelIndex &parent2))
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceModelAboutToBeReset())
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceModelReset())
|
||||
Q_PRIVATE_SLOT(d_func(), void _k_sourceModelDestroyed())
|
||||
};
|
||||
|
||||
#endif // KIDENTITYPROXYMODEL_H
|
Loading…
Add table
Reference in a new issue