diff --git a/project/importprojectjob.cpp b/project/importprojectjob.cpp index ea2678685b..d09cc94de8 100644 --- a/project/importprojectjob.cpp +++ b/project/importprojectjob.cpp @@ -1,115 +1,113 @@ /* This file is part of KDevelop Copyright 2004 Roberto Raggi Copyright 2007 Andreas Pakulat 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 "importprojectjob.h" #include "projectmodel.h" #include #include #include #include #include #include #include #include #include #include namespace KDevelop { class ImportProjectJobPrivate { public: ImportProjectJobPrivate() : cancel(false) {} ProjectFolderItem *m_folder; IProjectFileManager *m_importer; QFutureWatcher *m_watcher; QPointer m_project; bool cancel; void import(ProjectFolderItem* folder) { QList subFolders = m_importer->parse(folder); foreach(KDevelop::ProjectFolderItem* sub, subFolders) { if(!cancel) import(sub); } } }; ImportProjectJob::ImportProjectJob(ProjectFolderItem *folder, IProjectFileManager *importer) : KJob(0), d(new ImportProjectJobPrivate ) { - setCapabilities(Killable); - d->m_importer = importer; d->m_folder = folder; d->m_project = folder->project(); setObjectName(i18n("Project Import: %1", d->m_project->name())); } ImportProjectJob::~ImportProjectJob() { delete d; } void ImportProjectJob::start() { d->m_watcher = new QFutureWatcher(); connect(d->m_watcher, SIGNAL(finished()), SLOT(importDone())); connect(d->m_watcher, SIGNAL(canceled()), SLOT(importCanceled())); QFuture f = QtConcurrent::run(d, &ImportProjectJobPrivate::import, d->m_folder); d->m_watcher->setFuture(f); } void ImportProjectJob::importDone() { d->m_watcher->deleteLater(); /* Goodbye to the QFutureWatcher */ emitResult(); } bool ImportProjectJob::doKill() { d->m_watcher->cancel(); d->cancel=true; setError(1); setErrorText(i18n("Project import canceled.")); d->m_watcher->waitForFinished(); return true; } void ImportProjectJob::importCanceled() { d->m_watcher->deleteLater(); } } #include "importprojectjob.moc"