1 #include "SubTreeProxyModel.h" 
    3 #include <QAbstractItemModel> 
    4 #include <QIdentityProxyModel> 
    7 #include <QPersistentModelIndex> 
    8 #include <QSortFilterProxyModel> 
    9 #include <QStandardItem> 
   12 #include "ProjectItem.h" 
   36   QModelIndex SubTreeProxyModel::mapFromSource(
const QModelIndex &sourceIndex)
 const {
 
   40       qDebug() << 
"creating index for invisible root item " 
   42       return createIndex(sourceIndex.row(), 0, sourceIndex.internalId());
 
   46     if (sourceIndex == m_root) {
 
   47       return createIndex(sourceIndex.row(), 0, sourceIndex.internalId());
 
   51     QModelIndex ancestorIndex = sourceIndex.parent();
 
   52     while (ancestorIndex.isValid() && ancestorIndex != m_root) {
 
   53       ancestorIndex = ancestorIndex.parent();
 
   55     if (ancestorIndex.isValid()) {
 
   56       return createIndex(sourceIndex.row(), 0, sourceIndex.internalId());
 
   66   QModelIndex SubTreeProxyModel::mapToSource(
const QModelIndex &proxyIndex)
 const {
 
   67     return QIdentityProxyModel::mapToSource(proxyIndex);
 
   71   void SubTreeProxyModel::setSourceModel(QAbstractItemModel *newSourceModel) {
 
   72     QPersistentModelIndex persistentIndex(newSourceModel->index(0,0,QModelIndex()));
 
   74     if (persistentIndex.isValid()) {
 
   75       m_root = persistentIndex;
 
   78       m_root = QPersistentModelIndex(QModelIndex());
 
   81     QIdentityProxyModel::setSourceModel(newSourceModel);
 
   86     QAbstractItemModel::removeRows(1,2,item->index());
 
   88     if (m_root.isValid()) {