diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 6d75342b994..1479a72d23c 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -721,6 +721,11 @@ FileName &FileName::appendString(QChar str) return *this; } +QTextStream &operator<<(QTextStream &s, const FileName &fn) +{ + return s << fn.toString(); +} + static bool isFileDrop(const QMimeData *d, QList *files = 0) { // internal drop diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index 4e2403322ba..0a05451fd07 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -102,6 +102,7 @@ private: FileName(const QString &string); }; +QTCREATOR_UTILS_EXPORT QTextStream &operator<<(QTextStream &s, const FileName &fn); class QTCREATOR_UTILS_EXPORT FileUtils { public: diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index f5d3daaa31a..8bf2c8ea043 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -74,17 +74,17 @@ UnsavedFiles createUnsavedFiles(WorkingCopy workingCopy) // TODO: change the modelmanager to hold one working copy, and amend it every time we ask for one. // TODO: Reason: the UnsavedFile needs a QByteArray. - QSet modifiedFiles; + QSet<::Utils::FileName> modifiedFiles; foreach (IDocument *doc, Core::DocumentManager::modifiedDocuments()) - modifiedFiles.insert(doc->filePath()); + modifiedFiles.insert(::Utils::FileName::fromString(doc->filePath())); UnsavedFiles result; - QHashIterator > wcIter = workingCopy.iterator(); + QHashIterator<::Utils::FileName, QPair > wcIter = workingCopy.iterator(); while (wcIter.hasNext()) { wcIter.next(); - const QString &fileName = wcIter.key(); - if (modifiedFiles.contains(fileName) && QFile(fileName).exists()) - result.insert(fileName, wcIter.value().first); + const ::Utils::FileName &fileName = wcIter.key(); + if (modifiedFiles.contains(fileName) && QFile(fileName.toString()).exists()) + result.insert(fileName.toString(), wcIter.value().first); } return result; diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp index 9a3811cc2da..7c189f52e29 100644 --- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp +++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp @@ -1087,10 +1087,11 @@ void WorkingCopyModel::configure(const WorkingCopy &workingCopy) { emit layoutAboutToBeChanged(); m_workingCopyList.clear(); - QHashIterator > it = workingCopy.iterator(); + QHashIterator > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - m_workingCopyList << WorkingCopyEntry(it.key(), it.value().first, it.value().second); + m_workingCopyList << WorkingCopyEntry(it.key().toString(), it.value().first, + it.value().second); } emit layoutChanged(); } diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp index 32c420b2174..e0f44277c43 100644 --- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp +++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp @@ -580,10 +580,10 @@ void Dumper::dumpWorkingCopy(const WorkingCopy &workingCopy) m_out << "Working Copy contains " << workingCopy.size() << " entries{{{1\n"; const QByteArray i1 = indent(1); - QHashIterator > it = workingCopy.iterator(); + QHashIterator<::Utils::FileName, QPair > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - const QString filePath = it.key(); + const ::Utils::FileName &filePath = it.key(); unsigned sourcRevision = it.value().second; m_out << i1 << "rev=" << sourcRevision << ", " << filePath << "\n"; } diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 0e7b35f3643..bb0641a7799 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -684,10 +684,10 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles() QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h" QStringList fileNamesInWorkinCopy; - QHashIterator > it = workingCopy.iterator(); + QHashIterator > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - fileNamesInWorkinCopy << QFileInfo(it.key()).fileName(); + fileNamesInWorkinCopy << QFileInfo(it.key().toString()).fileName(); } fileNamesInWorkinCopy.sort(); const QString expectedUiHeaderFileName = _("ui_mainwindow.h"); diff --git a/src/plugins/cpptools/cppworkingcopy.h b/src/plugins/cpptools/cppworkingcopy.h index 4507c46127c..088fd22a1ec 100644 --- a/src/plugins/cpptools/cppworkingcopy.h +++ b/src/plugins/cpptools/cppworkingcopy.h @@ -33,6 +33,8 @@ #include "cpptools_global.h" +#include + #include #include #include @@ -45,28 +47,43 @@ public: WorkingCopy(); void insert(const QString &fileName, const QByteArray &source, unsigned revision = 0) + { insert(Utils::FileName::fromString(fileName), source, revision); } + + void insert(const Utils::FileName &fileName, const QByteArray &source, unsigned revision = 0) { _elements.insert(fileName, qMakePair(source, revision)); } bool contains(const QString &fileName) const + { return contains(Utils::FileName::fromString(fileName)); } + + bool contains(const Utils::FileName &fileName) const { return _elements.contains(fileName); } QByteArray source(const QString &fileName) const + { return source(Utils::FileName::fromString(fileName)); } + + QByteArray source(const Utils::FileName &fileName) const { return _elements.value(fileName).first; } unsigned revision(const QString &fileName) const + { return revision(Utils::FileName::fromString(fileName)); } + + unsigned revision(const Utils::FileName &fileName) const { return _elements.value(fileName).second; } QPair get(const QString &fileName) const + { return get(Utils::FileName::fromString(fileName)); } + + QPair get(const Utils::FileName &fileName) const { return _elements.value(fileName); } - QHashIterator > iterator() const - { return QHashIterator >(_elements); } + QHashIterator > iterator() const + { return QHashIterator >(_elements); } int size() const { return _elements.size(); } private: - typedef QHash > Table; + typedef QHash > Table; Table _elements; }; diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index 0abeb9a11f4..75d5aef09ea 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -537,12 +537,14 @@ bool QtCreatorIntegration::navigateToSlot(const QString &objectName, } else { const CppTools::WorkingCopy workingCopy = CppTools::CppModelManager::instance()->workingCopy(); - QHashIterator > it = workingCopy.iterator(); + const Utils::FileName configFileName = + Utils::FileName::fromString(CppTools::CppModelManager::configurationFileName()); + QHashIterator > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - const QString fileName = it.key(); - if (fileName != CppTools::CppModelManager::configurationFileName()) - newDocTable.insert(docTable.document(fileName)); + const Utils::FileName &fileName = it.key(); + if (fileName != configFileName) + newDocTable.insert(docTable.document(fileName.toString())); } } docTable = newDocTable;