1 /* This file is part of KDevelop
2 Copyright 2008 Aleix Pol <aleixpol@gmail.com>
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
20 #include "projectproxymodel.h"
21 #include <project/projectmodel.h>
23 #include <qfileinfo.h>
25 KDevelop::ProjectBaseItem::ProjectItemType
baseType( int type
)
27 if( type
== KDevelop::ProjectBaseItem::Folder
|| type
== KDevelop::ProjectBaseItem::BuildFolder
)
28 return KDevelop::ProjectBaseItem::Folder
;
29 if( type
== KDevelop::ProjectBaseItem::Target
|| type
== KDevelop::ProjectBaseItem::ExecutableTarget
30 || type
== KDevelop::ProjectBaseItem::LibraryTarget
)
31 return KDevelop::ProjectBaseItem::Target
;
33 return KDevelop::ProjectBaseItem::File
;
36 ProjectProxyModel::ProjectProxyModel(QObject
* parent
)
37 : QSortFilterProxyModel(parent
)
40 KDevelop::ProjectModel
* ProjectProxyModel::projectModel() const
42 return qobject_cast
<KDevelop::ProjectModel
*>( sourceModel() );
45 bool ProjectProxyModel::lessThan(const QModelIndex
& left
, const QModelIndex
& right
) const
47 KDevelop::ProjectBaseItem
*iLeft
=projectModel()->item(left
), *iRight
=projectModel()->item(right
);
48 if(!iLeft
|| !iRight
) return false;
50 KDevelop::ProjectBaseItem::ProjectItemType leftType
=baseType(iLeft
->type()), rightType
=baseType(iRight
->type());
51 if( leftType
== rightType
)
53 return iLeft
->text() < iRight
->text();
55 if( leftType
== KDevelop::ProjectBaseItem::Folder
)
59 if( leftType
== KDevelop::ProjectBaseItem::Target
&& rightType
!= KDevelop::ProjectBaseItem::Folder
)
66 QModelIndex
ProjectProxyModel::indexFromItem(QStandardItem
* item
) const
68 return mapFromSource(projectModel()->indexFromItem(item
));
71 #include "projectproxymodel.moc"