[prev in list] [next in list] [prev in thread] [next in thread]
List: quanta-devel
Subject: [quanta-devel]
From: Andras Mantia <amantia () kde ! org>
Date: 2007-06-23 17:24:16
Message-ID: 1182619456.224273.11774.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 679343 by amantia:
Open and read the items from the .webprj file.
CCMAIL:quanta-devel@kde.org
M +103 -61 quantaprojectfilemanager.cpp
--- trunk/KDE/kdewebdev/quanta/plugins/project/projectfilemanager/quantaprojectfilemanager.cpp \
#679342:679343 @@ -9,6 +9,7 @@
***************************************************************************/
#include "quantaprojectfilemanager.h"
+#include "extfileinfo.h"
#include <icore.h>
#include <iproject.h>
@@ -52,9 +53,16 @@
QList<KDevelop::ProjectFolderItem*> \
QuantaProjectFileManager::parse(KDevelop::ProjectFolderItem *base) {
+ //This method parses the whole project file for items belonging to the project \
instead of parsing + //the content of only one directory as it seems the framework \
waits. So simply return nothing when + //the request is for a folder which is not \
the base item. + if (base != m_baseItem)
+ return QList<KDevelop::ProjectFolderItem*>();
KUrl url = base->url();
+ QString name = base->project()->name();
+ name.replace(".kdev4", ".webprj");
url.adjustPath(KUrl::AddTrailingSlash);
- url.setFileName(base->project()->name() + ".webprj");
+ url.setFileName(name);
kDebug(24000) << "Parsing project file: " << url << endl;
QString projectTmpFile;
KParts::MainWindow *mainWindow = core()->uiController()->activeMainWindow();
@@ -67,75 +75,109 @@
QFile f(projectTmpFile);
if (f.open(IO_ReadOnly))
{
- KUrl baseURL = url;
- baseURL.setPath(url.directory());
- if (baseURL.isLocalFile())
+ KUrl baseUrl = url;
+ baseUrl.setPath(url.directory());
+ if (baseUrl.isLocalFile())
{
- QDir dir(baseURL.path());
- baseURL.setPath(dir.canonicalPath());
- baseURL.adjustPath(KUrl::RemoveTrailingSlash);
+ QDir dir(baseUrl.path());
+ baseUrl.setPath(dir.canonicalPath());
+ baseUrl.adjustPath(KUrl::RemoveTrailingSlash);
}
dom.setContent(&f);
- kDebug(24000) << "Project content: " << dom.toString() << endl;
- f.close();
+ //kDebug(24000) << "Project content: " << dom.toString() << endl;
+ f.close();
+
+ QMap<KUrl, KDevelop::ProjectFolderItem*> folderList;
+ url = baseUrl;
+ url.adjustPath(KUrl::AddTrailingSlash);
+ folderList.insert(url, base);
+ QStack<KUrl> urlStack;
+ KDevelop::ProjectFolderItem *parent;
+ //read the items from the dom
+ QString tmpString;
+ QDomNodeList nl = dom.firstChild().firstChild().childNodes();
+ QDomElement el;
+ uint nlCount = nl.count();
+ for ( uint i = 0; i < nlCount; i++ )
+ {
+ KUrl url = baseUrl;
+ el = nl.item(i).toElement();
+ tmpString = el.attribute("url");
+ if (!tmpString.isEmpty())
+ {
+ ExtFileInfo::setUrl(url,tmpString);
+ } else
+ continue;
+// kDebug(24000) << "tmpstring " << tmpString <<" url " << url << " baseUrl \
" << baseUrl << endl; + url = ExtFileInfo::toAbsolute(url, baseUrl);
+ if ( el.nodeName() == "item" )
+ {
+// if (excludeRx.exactMatch(path) || find(url.url(-1)))
+// {
+// el.parentNode().removeChild(el);
+// modified = true;
+// i--;
+// } else
+ {
+ bool docFolder = (el.attribute("documentFolder", "false") == "true");
+ int uploadStatus = el.attribute("uploadstatus", "-1").toInt();
+ if (uploadStatus == -1)
+ el.setAttribute("uploadstatus", 1);
+ //remove non-existent local files
+ bool skipItem = false;
+ if (url.isLocalFile())
+ {
+ QFileInfo fi(url.path());
+ if ( !fi.exists() )
+ {
+ el.parentNode().removeChild( el );
+ i--;
+ skipItem = true;
+ }
+ }
+ if (!skipItem)
+ {
+ KUrl fileUrl = url;
+ url = fileUrl.upUrl();
+ // search for not yet created folders
+ while (url != baseUrl)
+ {
+ if (folderList.contains(url))
+ {
+ parent = folderList[url];
+ break;
+ }
+ urlStack.push(url);
+ url = url.upUrl();
+ }
+ // add new folders
+ while (!urlStack.isEmpty())
+ {
+// kDebug(24000) << "Adding folder: " << urlStack.top()<< endl;
+ KDevelop::ProjectFolderItem *item = new \
KDevelop::ProjectFolderItem(m_project, urlStack.top(), parent); + \
folderList.insert(urlStack.pop(), item); + parent = item;
+ }
+ // add the file
+// kDebug(24000) << "Adding file: " << fileUrl<< endl;
+ KDevelop::ProjectFileItem *item = new \
KDevelop::ProjectFileItem(m_project, fileUrl, parent); + }
+ }
+ }
+ }
+ //the base should not be returned as it was already created in the import \
method + url = baseUrl;
+ url.adjustPath(KUrl::AddTrailingSlash);
+ folderList.remove(url);
+ return folderList.values();
}
+ KMessageBox::error(mainWindow, i18n("<qt>Cannot open the downloaded project \
file.</qt>")); + return QList<KDevelop::ProjectFolderItem*>();
} else
{
KMessageBox::error(mainWindow, i18n("<qt>Cannot access the project file \
<b>%1</b>.</qt>").arg(url.pathOrUrl())); return \
QList<KDevelop::ProjectFolderItem*>(); }
-
-/*
- const QString prefix = "Item - ";
- KSharedConfigPtr projectConfig = m_project->projectConfiguration();
- QStringList groupList = projectConfig->groupList();
- QMap<KUrl, KDevelop::ProjectFolderItem*> folderList;
- KUrl baseUrl = base->url();
- folderList.insert(baseUrl, base);
- QStack<KUrl> urlStack;
- QString relFileName;
- KUrl url, fileUrl;
- KDevelop::ProjectFolderItem *parent;
-
- //Just for testing with more files
-// KUrl::List urls = ExtFileInfo::allFiles(m_baseItem->url(), "*");
-// foreach( KUrl fileUrl, urls)
-
- foreach (QString group, groupList)
- {
- if (! group.startsWith(prefix))
- continue;
-
- relFileName = group.mid(prefix.length());
- fileUrl = m_project->urlRelativeToProject(relFileName);
- parent = m_baseItem;
- url = fileUrl.upUrl();
- // search for not yet created folders
- while (url != baseUrl)
- {
- if (folderList.contains(url))
- {
- parent = folderList[url];
- break;
- }
- urlStack.push(url);
- url = url.upUrl();
- }
- // add new folders
- while (! urlStack.isEmpty())
- {
- KDevelop::ProjectFolderItem *item = new KDevelop::ProjectFolderItem(m_project, \
urlStack.top(), parent);
- parent->add(item);
- folderList.insert(urlStack.pop(), item);
- parent = item;
- emit folderAdded(item);
- }
- // add the file
- KDevelop::ProjectFileItem *item = new KDevelop::ProjectFileItem(m_project, \
fileUrl, parent);
- parent->add(item);
- emit fileAdded(item);
- }
- return QList<KDevelop::ProjectFolderItem *>();*/
}
KDevelop::ProjectFolderItem* QuantaProjectFileManager::addFolder(const KUrl &folder, \
KDevelop::ProjectFolderItem *parent) _______________________________________________
quanta-devel mailing list
quanta-devel@kde.org
https://mail.kde.org/mailman/listinfo/quanta-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic