aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
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
parent093f3479ce19ad559d3a07263a23de6fa3e60c09 (diff)
Core: filepathify FileIconProvider
Change-Id: Id6fcc05317f3f5144c662fb4826438407f8d9d21 Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp2
-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
-rw-r--r--src/plugins/cppcheck/cppcheckdiagnosticsmodel.cpp2
-rw-r--r--src/plugins/cppeditor/cppincludehierarchy.cpp4
-rw-r--r--src/plugins/projectexplorer/dependenciespanel.cpp2
-rw-r--r--src/plugins/projectexplorer/projectmodels.cpp2
-rw-r--r--src/plugins/projectexplorer/selectablefilesmodel.cpp2
-rw-r--r--src/plugins/resourceeditor/qrceditor/resourcefile.cpp2
-rw-r--r--src/plugins/resourceeditor/resourcenode.cpp2
-rw-r--r--src/plugins/vcsbase/submitfilemodel.cpp5
16 files changed, 41 insertions, 41 deletions
diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
index 081f716bb9..1a0cc352ea 100644
--- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
+++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp
@@ -58,7 +58,7 @@ QVariant FilePathItem::data(int column, int role) const
case Qt::DisplayRole:
return m_filePath.toUserOutput();
case Qt::DecorationRole:
- return Core::FileIconProvider::icon(m_filePath.toFileInfo());
+ return Core::FileIconProvider::icon(m_filePath);
case Debugger::DetailedErrorView::FullTextRole:
return m_filePath.toUserOutput();
default:
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;
diff --git a/src/plugins/cppcheck/cppcheckdiagnosticsmodel.cpp b/src/plugins/cppcheck/cppcheckdiagnosticsmodel.cpp
index 49bc745838..0f3b8a9465 100644
--- a/src/plugins/cppcheck/cppcheckdiagnosticsmodel.cpp
+++ b/src/plugins/cppcheck/cppcheckdiagnosticsmodel.cpp
@@ -47,7 +47,7 @@ QVariant FilePathItem::data(int column, int role) const
case Qt::DisplayRole:
return m_filePath;
case Qt::DecorationRole:
- return Core::FileIconProvider::icon(QFileInfo(m_filePath));
+ return Core::FileIconProvider::icon(Utils::FilePath::fromString(m_filePath));
case Debugger::DetailedErrorView::FullTextRole:
return m_filePath;
default:
diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp
index 1c4e8be8d8..9f1d77cf32 100644
--- a/src/plugins/cppeditor/cppincludehierarchy.cpp
+++ b/src/plugins/cppeditor/cppincludehierarchy.cpp
@@ -197,9 +197,9 @@ QVariant CppIncludeHierarchyItem::data(int column, int role) const
case Qt::ToolTipRole:
return m_filePath;
case Qt::DecorationRole:
- return FileIconProvider::icon(QFileInfo(m_filePath));
+ return FileIconProvider::icon(FilePath::fromString(m_filePath));
case LinkRole:
- return QVariant::fromValue(Utils::Link(Utils::FilePath::fromString(m_filePath), m_line));
+ return QVariant::fromValue(Link(FilePath::fromString(m_filePath), m_line));
}
return QVariant();
diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp
index f1d43c2b29..94ccadbd57 100644
--- a/src/plugins/projectexplorer/dependenciespanel.cpp
+++ b/src/plugins/projectexplorer/dependenciespanel.cpp
@@ -99,7 +99,7 @@ QVariant DependenciesModel::data(const QModelIndex &index, int role) const
case Qt::CheckStateRole:
return SessionManager::hasDependency(m_project, p) ? Qt::Checked : Qt::Unchecked;
case Qt::DecorationRole:
- return Core::FileIconProvider::icon(p->projectFilePath().toFileInfo());
+ return Core::FileIconProvider::icon(p->projectFilePath());
default:
return QVariant();
}
diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp
index d701a60ca2..38fbaae91d 100644
--- a/src/plugins/projectexplorer/projectmodels.cpp
+++ b/src/plugins/projectexplorer/projectmodels.cpp
@@ -142,7 +142,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const
}
case Qt::DecorationRole: {
if (!folderNode)
- return Core::FileIconProvider::icon(node->filePath().toFileInfo());
+ return Core::FileIconProvider::icon(node->filePath());
if (!project)
return folderNode->icon();
static QIcon warnIcon = Utils::Icons::WARNING.icon();
diff --git a/src/plugins/projectexplorer/selectablefilesmodel.cpp b/src/plugins/projectexplorer/selectablefilesmodel.cpp
index 2cc06dbfa3..1328253130 100644
--- a/src/plugins/projectexplorer/selectablefilesmodel.cpp
+++ b/src/plugins/projectexplorer/selectablefilesmodel.cpp
@@ -231,7 +231,7 @@ QVariant SelectableFilesModel::data(const QModelIndex &index, int role) const
return t->checked;
if (role == Qt::DecorationRole) {
if (t->icon.isNull())
- t->icon = Core::FileIconProvider::icon(t->fullPath.toFileInfo());
+ t->icon = Core::FileIconProvider::icon(t->fullPath);
return t->icon;
}
return QVariant();
diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
index 9cb8dd1e79..7b48f88ef2 100644
--- a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
+++ b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
@@ -798,7 +798,7 @@ QVariant ResourceModel::data(const QModelIndex &index, int role) const
if (iconFileExtension(path))
file->icon = QIcon(path);
else
- file->icon = Core::FileIconProvider::icon(QFileInfo(path));
+ file->icon = Core::FileIconProvider::icon(Utils::FilePath::fromString(path));
}
if (!file->icon.isNull())
result = file->icon;
diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp
index 7b57a6eabf..a6fb56fbe7 100644
--- a/src/plugins/resourceeditor/resourcenode.cpp
+++ b/src/plugins/resourceeditor/resourcenode.cpp
@@ -243,7 +243,7 @@ ResourceTopLevelNode::ResourceTopLevelNode(const FilePath &filePath,
const QString &contents)
: FolderNode(filePath)
{
- setIcon([filePath] { return FileIconProvider::icon(filePath.toFileInfo()); });
+ setIcon([filePath] { return FileIconProvider::icon(filePath); });
setPriority(Node::DefaultFilePriority);
setListInProject(true);
setAddFileFilter("*.png; *.jpg; *.gif; *.svg; *.ico; *.qml; *.qml.ui");
diff --git a/src/plugins/vcsbase/submitfilemodel.cpp b/src/plugins/vcsbase/submitfilemodel.cpp
index d7992de377..7366e8649e 100644
--- a/src/plugins/vcsbase/submitfilemodel.cpp
+++ b/src/plugins/vcsbase/submitfilemodel.cpp
@@ -26,6 +26,7 @@
#include "submitfilemodel.h"
#include <coreplugin/fileiconprovider.h>
+#include <utils/fileutils.h>
#include <utils/qtcassert.h>
#include <utils/theme/theme.h>
@@ -88,8 +89,8 @@ static QList<QStandardItem *> createFileRow(const QString &repositoryRoot,
// For some reason, Windows (at least) requires a valid (existing) file path to the icon, so
// the repository root is needed here.
// Note: for "overlaid" icons in Core::FileIconProvider a valid file path is not required
- const QFileInfo fi(repositoryRoot + QLatin1Char('/') + fileName);
- fileItem->setIcon(Core::FileIconProvider::icon(fi));
+ fileItem->setIcon(Core::FileIconProvider::icon(
+ Utils::FilePath::fromString(repositoryRoot).pathAppended(fileName)));
const QList<QStandardItem *> row{statusItem, fileItem};
if (statusHint != SubmitFileModel::FileStatusUnknown) {
const QBrush textForeground = fileStatusTextForeground(statusHint);