forked from qt-creator/qt-creator
Core: Use FilePath in IDocumentFactory::open()
Change-Id: I369f3bba2e0d1d33fed3a29f3c1408429cc7d8f8 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -46,10 +46,10 @@ const QList<IDocumentFactory *> IDocumentFactory::allDocumentFactories()
|
|||||||
return g_documentFactories;
|
return g_documentFactories;
|
||||||
}
|
}
|
||||||
|
|
||||||
IDocument *IDocumentFactory::open(const QString &filename)
|
IDocument *IDocumentFactory::open(const Utils::FilePath &filePath)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_opener, return nullptr);
|
QTC_ASSERT(m_opener, return nullptr);
|
||||||
return m_opener(filename);
|
return m_opener(filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
namespace Utils { class FilePath; }
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
class IDocument;
|
class IDocument;
|
||||||
@@ -45,8 +47,8 @@ public:
|
|||||||
|
|
||||||
static const QList<IDocumentFactory *> allDocumentFactories();
|
static const QList<IDocumentFactory *> allDocumentFactories();
|
||||||
|
|
||||||
using Opener = std::function<IDocument *(const QString &fileName)>;
|
using Opener = std::function<IDocument *(const Utils::FilePath &filePath)>;
|
||||||
IDocument *open(const QString &filename);
|
IDocument *open(const Utils::FilePath &filePath);
|
||||||
|
|
||||||
QStringList mimeTypes() const { return m_mimeTypes; }
|
QStringList mimeTypes() const { return m_mimeTypes; }
|
||||||
|
|
||||||
|
|||||||
@@ -892,7 +892,7 @@ IDocument *MainWindow::openFiles(const FilePaths &filePaths,
|
|||||||
const QFileInfo fi(workingDir, fileName);
|
const QFileInfo fi(workingDir, fileName);
|
||||||
const QString absoluteFilePath = fi.absoluteFilePath();
|
const QString absoluteFilePath = fi.absoluteFilePath();
|
||||||
if (IDocumentFactory *documentFactory = findDocumentFactory(documentFactories, filePath)) {
|
if (IDocumentFactory *documentFactory = findDocumentFactory(documentFactories, filePath)) {
|
||||||
IDocument *document = documentFactory->open(absoluteFilePath);
|
IDocument *document = documentFactory->open(FilePath::fromString(absoluteFilePath));
|
||||||
if (!document) {
|
if (!document) {
|
||||||
if (flags & ICore::StopOnLoadFail)
|
if (flags & ICore::StopOnLoadFail)
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -2081,12 +2081,15 @@ void ProjectExplorerPlugin::extensionsInitialized()
|
|||||||
const QString filterSeparator = QLatin1String(";;");
|
const QString filterSeparator = QLatin1String(";;");
|
||||||
QStringList filterStrings;
|
QStringList filterStrings;
|
||||||
|
|
||||||
dd->m_documentFactory.setOpener([](QString fileName) {
|
dd->m_documentFactory.setOpener([](FilePath filePath) {
|
||||||
const QFileInfo fi(fileName);
|
if (filePath.isDir()) {
|
||||||
if (fi.isDir())
|
const QStringList files =
|
||||||
fileName = FolderNavigationWidget::projectFilesInDirectory(fi.absoluteFilePath()).value(0, fileName);
|
FolderNavigationWidget::projectFilesInDirectory(filePath.absoluteFilePath().toString());
|
||||||
|
if (!files.isEmpty())
|
||||||
|
filePath = FilePath::fromString(files.front());
|
||||||
|
}
|
||||||
|
|
||||||
OpenProjectResult result = ProjectExplorerPlugin::openProject(FilePath::fromString(fileName));
|
OpenProjectResult result = ProjectExplorerPlugin::openProject(filePath);
|
||||||
if (!result)
|
if (!result)
|
||||||
showOpenProjectError(result);
|
showOpenProjectError(result);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@@ -209,8 +209,8 @@ bool TaskListPlugin::initialize(const QStringList &arguments, QString *errorMess
|
|||||||
TaskHub::addCategory(Constants::TASKLISTTASK_ID, tr("My Tasks"));
|
TaskHub::addCategory(Constants::TASKLISTTASK_ID, tr("My Tasks"));
|
||||||
|
|
||||||
d->m_fileFactory.addMimeType(QLatin1String("text/x-tasklist"));
|
d->m_fileFactory.addMimeType(QLatin1String("text/x-tasklist"));
|
||||||
d->m_fileFactory.setOpener([this](const QString &fileName) {
|
d->m_fileFactory.setOpener([this](const FilePath &filePath) {
|
||||||
return openTasks(FilePath::fromString(fileName));
|
return openTasks(filePath);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(SessionManager::instance(), &SessionManager::sessionLoaded,
|
connect(SessionManager::instance(), &SessionManager::sessionLoaded,
|
||||||
|
|||||||
Reference in New Issue
Block a user