1 /* This file is part of KDevelop
2 Copyright 2004 Roberto Raggi <roberto@kdevelop.org>
3 Copyright 2007 Andreas Pakulat <apaku@gmx.de>
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
21 #include "importprojectjob.h"
22 #include "projectmodel.h"
30 #include <interfaces/iprojectfilemanager.h>
35 class ImportProjectJobPrivate
38 ImportProjectJobPrivate( ImportProjectJob
* job
) : q(job
) {}
39 ProjectFolderItem
*m_folder
;
40 IProjectFileManager
*m_importer
;
42 QQueue
< QList
<KDevelop::ProjectFolderItem
*> > m_workQueue
;
48 if( m_workQueue
.count() > 0 )
50 QList
<KDevelop::ProjectFolderItem
*> front
= m_workQueue
.dequeue();
51 Q_FOREACH( KDevelop::ProjectFolderItem
* _item
, front
)
53 QList
<KDevelop::ProjectFolderItem
*> workingList
= m_importer
->parse( _item
);
54 if( workingList
.count() > 0 )
55 m_workQueue
.enqueue( workingList
);
65 ImportProjectJob::ImportProjectJob(QStandardItem
*folder
, IProjectFileManager
*importer
)
66 : KJob(0), d(new ImportProjectJobPrivate( this ) )
69 d
->m_importer
= importer
;
70 ProjectFolderItem
*folderItem
= 0;
71 if ( folder
->type() == ProjectBaseItem::Folder
||
72 folder
->type() == ProjectBaseItem::BuildFolder
)
74 folderItem
= dynamic_cast<ProjectFolderItem
*>( folder
);
76 d
->m_folder
= folderItem
;
77 d
->m_timer
.setInterval(200);
78 connect( &d
->m_timer
, SIGNAL(timeout()), this, SLOT(parseItem()) );
81 ImportProjectJob::~ImportProjectJob()
86 void ImportProjectJob::start()
88 QList
<KDevelop::ProjectFolderItem
*> initial
;
89 initial
.append( d
->m_folder
);
90 d
->m_workQueue
.enqueue( initial
);
96 #include "importprojectjob.moc"