diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index a072ab420e88d13a1070f0641e2cdddb362bae36..bea44573dadeeeb841b547c490963827ab81a6e0 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -245,7 +245,7 @@ struct InternalNode QMap<QString, InternalNode*> subnodes; QStringList files; ProjectExplorer::FileType type; - QString fullName; + QString fullPath; QIcon icon; InternalNode() @@ -269,6 +269,13 @@ struct InternalNode // * file2 // * path2 // * file1 + // The method first creates a tree that looks like the directory structure, i.e. + // * / + // * absolute + // * path + // ... + // and afterwards calls compress() which merges directory nodes with single children, i.e. to + // * /absolute/path void create(const QString &projectDir, const QStringList &newFilePaths, ProjectExplorer::FileType type) { static const QChar separator = QChar('/'); @@ -299,7 +306,7 @@ struct InternalNode if (!currentNode->subnodes.contains(key)) { InternalNode *val = new InternalNode; val->type = type; - val->fullName = path; + val->fullPath = path; currentNode->subnodes.insert(key, val); currentNode = val; } else { @@ -317,7 +324,7 @@ struct InternalNode // Removes folder nodes with only a single sub folder in it void compress() { - static const QChar separator = QChar('/'); + static const QChar separator = QDir::separator(); // it is used for the *keys* which will become display name QMap<QString, InternalNode*> newSubnodes; QMapIterator<QString, InternalNode*> i(subnodes); while (i.hasNext()) { @@ -363,7 +370,7 @@ struct InternalNode foldersToRemove << *existingNodeIter; ++existingNodeIter; } else if ((*existingNodeIter)->displayName() > newNodeIter.key()) { - FolderNode *newNode = new FolderNode(newNodeIter.value()->fullName); + FolderNode *newNode = new FolderNode(newNodeIter.value()->fullPath); newNode->setDisplayName(newNodeIter.key()); if (!newNodeIter.value()->icon.isNull()) newNode->setIcon(newNodeIter.value()->icon); @@ -382,7 +389,7 @@ struct InternalNode ++existingNodeIter; } while (newNodeIter != subnodes.constEnd()) { - FolderNode *newNode = new FolderNode(newNodeIter.value()->fullName); + FolderNode *newNode = new FolderNode(newNodeIter.value()->fullPath); newNode->setDisplayName(newNodeIter.key()); if (!newNodeIter.value()->icon.isNull()) newNode->setIcon(newNodeIter.value()->icon); @@ -489,7 +496,7 @@ void Qt4PriFileNode::update(ProFile *includeFile, ProFileReader *reader) InternalNode *subfolder = new InternalNode; subfolder->type = type; subfolder->icon = fileTypes.at(i).icon; - subfolder->fullName = m_projectDir + '#' + fileTypes.at(i).typeName; + subfolder->fullPath = m_projectDir + '#' + fileTypes.at(i).typeName; contents.subnodes.insert(fileTypes.at(i).typeName, subfolder); // create the hierarchy with subdirectories subfolder->create(m_projectDir, newFilePaths, type);