File indexing completed on 2024-04-28 04:39:10
0001 /* 0002 SPDX-FileCopyrightText: 2012 Andrew Fuller <mactalla.obair@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "projectmodelsaver.h" 0008 #include "projecttreeview.h" 0009 0010 #include "project/projectmodel.h" 0011 #include <interfaces/icore.h> 0012 #include <interfaces/iprojectcontroller.h> 0013 0014 #include <QStringList> 0015 #include <QAbstractProxyModel> 0016 0017 namespace KDevelop 0018 { 0019 0020 ProjectModelSaver::ProjectModelSaver() 0021 { 0022 } 0023 0024 void ProjectModelSaver::setProject(IProject* project) 0025 { 0026 m_project = project; 0027 } 0028 0029 QModelIndex ProjectModelSaver::indexFromConfigString(const QAbstractItemModel *viewModel, const QString &key) const 0030 { 0031 const KDevelop::ProjectModel *projectModel = KDevelop::ICore::self()->projectController()->projectModel(); 0032 0033 const QModelIndex sourceIndex = projectModel->pathToIndex(key.split(QLatin1Char('/'))); 0034 0035 if ( m_project && sourceIndex.isValid() ) { 0036 ProjectBaseItem* item = projectModel->itemFromIndex(sourceIndex); 0037 if ( item && item->project() == m_project ) { 0038 return ProjectTreeView::mapFromSource(qobject_cast<const QAbstractProxyModel*>(viewModel), sourceIndex); 0039 } 0040 } 0041 return QModelIndex(); 0042 } 0043 0044 QString ProjectModelSaver::indexToConfigString(const QModelIndex& index) const 0045 { 0046 if( !index.isValid() || !m_project ) { 0047 return QString(); 0048 } 0049 0050 auto* item = index.data(ProjectModel::ProjectItemRole).value<ProjectBaseItem*>(); 0051 if ( !item || item->project() != m_project ) { 0052 return QString(); 0053 } 0054 0055 return ICore::self()->projectController()->projectModel()->pathFromIndex( item->index() ).join(QLatin1Char('/')); 0056 } 0057 0058 } 0059 0060 #include "moc_projectmodelsaver.cpp"