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"