aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2021-06-08 12:54:22 +0200
committerDavid Schulz <david.schulz@qt.io>2021-06-09 12:25:19 +0000
commit43b6ada0db401fd29cb77b5ab621f786bd31483b (patch)
tree66ecf46da753937ae9bdf623089e30bb237d81ce /src/plugins/coreplugin
parent093f3479ce19ad559d3a07263a23de6fa3e60c09 (diff)
Core: filepathify FileIconProvider
Change-Id: Id6fcc05317f3f5144c662fb4826438407f8d9d21 Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r--src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp11
-rw-r--r--src/plugins/coreplugin/dialogs/saveitemsdialog.cpp13
-rw-r--r--src/plugins/coreplugin/editortoolbar.cpp2
-rw-r--r--src/plugins/coreplugin/fileiconprovider.cpp21
-rw-r--r--src/plugins/coreplugin/fileiconprovider.h4
-rw-r--r--src/plugins/coreplugin/locator/locatorwidget.cpp2
-rw-r--r--src/plugins/coreplugin/vcsmanager.cpp6
7 files changed, 29 insertions, 30 deletions
diff --git a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
index dd49e0bdb7..262e14f477 100644
--- a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
@@ -414,21 +414,20 @@ void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths)
QString vcsMakeWritableTextForAll;
bool useMakeWritable = false;
for (const FilePath &filePath : filePaths) {
- const QFileInfo info = filePath.toFileInfo();
- const QString visibleName = info.fileName();
- const QString directory = info.absolutePath();
+ const QString visibleName = filePath.fileName();
+ const FilePath directory = filePath.absolutePath();
// Setup a default entry with filename folder and make writable radio button.
auto item = new QTreeWidgetItem(ui.treeWidget);
item->setText(FileName, visibleName);
- item->setIcon(FileName, FileIconProvider::icon(info));
- item->setText(Folder, Utils::FilePath::fromString(directory).shortNativePath());
+ item->setIcon(FileName, FileIconProvider::icon(filePath));
+ item->setText(Folder, directory.shortNativePath());
auto radioButtonGroup = new QButtonGroup;
// Add a button for opening the file with a version control system
// if the file is managed by an version control system which allows opening files.
IVersionControl *versionControlForFile =
- VcsManager::findVersionControlForDirectory(directory);
+ VcsManager::findVersionControlForDirectory(directory.toString());
const bool fileManagedByVCS = versionControlForFile
&& versionControlForFile->openSupportMode(filePath.toString()) != IVersionControl::NoOpen;
if (fileManagedByVCS) {
diff --git a/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp b/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp
index b533182a99..302a02f871 100644
--- a/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/saveitemsdialog.cpp
@@ -68,18 +68,17 @@ SaveItemsDialog::SaveItemsDialog(QWidget *parent,
foreach (IDocument *document, items) {
QString visibleName;
QString directory;
- QString fileName = document->filePath().toString();
- if (fileName.isEmpty()) {
+ Utils::FilePath filePath = document->filePath();
+ if (filePath.isEmpty()) {
visibleName = document->fallbackSaveAsFileName();
} else {
- QFileInfo info = QFileInfo(fileName);
- directory = info.absolutePath();
- visibleName = info.fileName();
+ directory = filePath.absolutePath().toUserOutput();
+ visibleName = filePath.fileName();
}
QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList()
<< visibleName << QDir::toNativeSeparators(directory));
- if (!fileName.isEmpty())
- item->setIcon(0, FileIconProvider::icon(QFileInfo(fileName)));
+ if (!filePath.isEmpty())
+ item->setIcon(0, FileIconProvider::icon(filePath));
item->setData(0, Qt::UserRole, QVariant::fromValue(document));
}
diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp
index 99dfab9182..49da6c1dce 100644
--- a/src/plugins/coreplugin/editortoolbar.cpp
+++ b/src/plugins/coreplugin/editortoolbar.cpp
@@ -417,7 +417,7 @@ void EditorToolBar::updateDocumentStatus(IDocument *document)
if (document->filePath().isEmpty())
d->m_dragHandle->setIcon(QIcon());
else
- d->m_dragHandle->setIcon(FileIconProvider::icon(document->filePath().toFileInfo()));
+ d->m_dragHandle->setIcon(FileIconProvider::icon(document->filePath()));
d->m_editorList->setToolTip(document->filePath().isEmpty()
? document->displayName()
diff --git a/src/plugins/coreplugin/fileiconprovider.cpp b/src/plugins/coreplugin/fileiconprovider.cpp
index 8ce3bce56f..f45d9aeada 100644
--- a/src/plugins/coreplugin/fileiconprovider.cpp
+++ b/src/plugins/coreplugin/fileiconprovider.cpp
@@ -25,6 +25,7 @@
#include "fileiconprovider.h"
+#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/optional.h>
@@ -90,7 +91,7 @@ public:
FileIconProviderImplementation()
{}
- QIcon icon(const QFileInfo &info) const override;
+ QIcon icon(const FilePath &filePath) const;
using QFileIconProvider::icon;
void registerIconOverlayForFilename(const QString &iconFilePath, const QString &filename)
@@ -139,19 +140,19 @@ QFileIconProvider *iconProvider()
return instance();
}
-QIcon FileIconProviderImplementation::icon(const QFileInfo &fileInfo) const
+QIcon FileIconProviderImplementation::icon(const FilePath &filePath) const
{
if (debug)
- qDebug() << "FileIconProvider::icon" << fileInfo.absoluteFilePath();
+ qDebug() << "FileIconProvider::icon" << filePath.absoluteFilePath();
// Check for cached overlay icons by file suffix.
- bool isDir = fileInfo.isDir();
- const QString filename = !isDir ? fileInfo.fileName() : QString();
+ bool isDir = filePath.isDir();
+ const QString filename = !isDir ? filePath.fileName() : QString();
if (!filename.isEmpty()) {
const Utils::optional<QIcon> icon = getIcon(m_filenameCache, filename);
if (icon)
return *icon;
}
- const QString suffix = !isDir ? fileInfo.suffix() : QString();
+ const QString suffix = !isDir ? filePath.suffix() : QString();
if (!suffix.isEmpty()) {
const Utils::optional<QIcon> icon = getIcon(m_suffixCache, suffix);
if (icon)
@@ -161,10 +162,10 @@ QIcon FileIconProviderImplementation::icon(const QFileInfo &fileInfo) const
// Get icon from OS (and cache it based on suffix!)
QIcon icon;
if (HostOsInfo::isWindowsHost() || HostOsInfo::isMacHost()) {
- icon = QFileIconProvider::icon(fileInfo);
+ icon = QFileIconProvider::icon(filePath.toFileInfo());
} else { // File icons are unknown on linux systems.
static const QIcon unknownFileIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon));
- icon = isDir ? QFileIconProvider::icon(fileInfo) : unknownFileIcon;
+ icon = isDir ? QFileIconProvider::icon(filePath.toFileInfo()) : unknownFileIcon;
}
if (!isDir && !suffix.isEmpty())
m_suffixCache.insert(suffix, icon);
@@ -176,9 +177,9 @@ QIcon FileIconProviderImplementation::icon(const QFileInfo &fileInfo) const
the default icon of the operating system is returned.
*/
-QIcon icon(const QFileInfo &info)
+QIcon icon(const FilePath &filePath)
{
- return instance()->icon(info);
+ return instance()->icon(filePath);
}
/*!
diff --git a/src/plugins/coreplugin/fileiconprovider.h b/src/plugins/coreplugin/fileiconprovider.h
index 9bfbc588e9..8089f36a1e 100644
--- a/src/plugins/coreplugin/fileiconprovider.h
+++ b/src/plugins/coreplugin/fileiconprovider.h
@@ -30,6 +30,8 @@
#include <QStyle>
#include <QFileIconProvider>
+namespace Utils { class FilePath; }
+
namespace Core {
namespace FileIconProvider {
@@ -38,7 +40,7 @@ namespace FileIconProvider {
CORE_EXPORT QFileIconProvider *iconProvider();
// Access to individual items
-CORE_EXPORT QIcon icon(const QFileInfo &info);
+CORE_EXPORT QIcon icon(const Utils::FilePath &filePath);
CORE_EXPORT QIcon icon(QFileIconProvider::IconType type);
// Register additional overlay icons
diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp
index 7116b3650f..1e3e14c49a 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.cpp
+++ b/src/plugins/coreplugin/locator/locatorwidget.cpp
@@ -210,7 +210,7 @@ QVariant LocatorModel::data(const QModelIndex &index, int role) const
if (index.column() == DisplayNameColumn) {
LocatorFilterEntry &entry = mEntries[index.row()];
if (!entry.displayIcon && !entry.filePath.isEmpty())
- entry.displayIcon = FileIconProvider::icon(entry.filePath.toFileInfo());
+ entry.displayIcon = FileIconProvider::icon(entry.filePath);
return entry.displayIcon ? entry.displayIcon.value() : QIcon();
}
break;
diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp
index 4501c67b9a..f980fafbd9 100644
--- a/src/plugins/coreplugin/vcsmanager.cpp
+++ b/src/plugins/coreplugin/vcsmanager.cpp
@@ -345,10 +345,8 @@ FilePaths VcsManager::promptToDelete(const FilePaths &filePaths)
// Categorize files by their parent directory, so we won't call
// findVersionControlForDirectory() more often than necessary.
QMap<FilePath, FilePaths> filesByParentDir;
- for (const FilePath &fp : filePaths) {
- filesByParentDir[FilePath::fromString(QDir::cleanPath(fp.toFileInfo().absolutePath()))]
- .append(fp);
- }
+ for (const FilePath &fp : filePaths)
+ filesByParentDir[fp.absolutePath()].append(fp);
// Categorize by version control system.
QHash<IVersionControl *, FilePaths> filesByVersionControl;