QFileSystem{Model,Watcher}: port to PMF signal/slot syntax

Also remove the `_q_` prefix from private slot names, it was needed to
mark them as being used with Q_PRIVATE_SLOT, which is also gone in this
commit.

Drive-by change: de-duplicate some code.

Change-Id: Ib41d0ac24ae584746751c0c2b5c477f600627db1
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
Ahmad Samir 2024-01-05 22:17:28 +02:00
parent e366a47d65
commit 27dd178900
6 changed files with 49 additions and 63 deletions

View File

@ -58,29 +58,29 @@ QFileSystemWatcherPrivate::QFileSystemWatcherPrivate()
{
}
void QFileSystemWatcherPrivate::connectEngine(QFileSystemWatcherEngine *engine)
{
QObjectPrivate::connect(engine, &QFileSystemWatcherEngine::fileChanged,
this, &QFileSystemWatcherPrivate::fileChanged);
QObjectPrivate::connect(engine, &QFileSystemWatcherEngine::directoryChanged,
this, &QFileSystemWatcherPrivate::directoryChanged);
}
void QFileSystemWatcherPrivate::init()
{
Q_Q(QFileSystemWatcher);
native = createNativeEngine(q);
if (native) {
QObject::connect(native,
SIGNAL(fileChanged(QString,bool)),
q,
SLOT(_q_fileChanged(QString,bool)));
QObject::connect(native,
SIGNAL(directoryChanged(QString,bool)),
q,
SLOT(_q_directoryChanged(QString,bool)));
connectEngine(native);
#if defined(Q_OS_WIN)
QObject::connect(static_cast<QWindowsFileSystemWatcherEngine *>(native),
&QWindowsFileSystemWatcherEngine::driveLockForRemoval,
q, [this] (const QString &p) { _q_winDriveLockForRemoval(p); });
QObject::connect(static_cast<QWindowsFileSystemWatcherEngine *>(native),
&QWindowsFileSystemWatcherEngine::driveLockForRemovalFailed,
q, [this] (const QString &p) { _q_winDriveLockForRemovalFailed(p); });
QObject::connect(static_cast<QWindowsFileSystemWatcherEngine *>(native),
&QWindowsFileSystemWatcherEngine::driveRemoved,
q, [this] (const QString &p) { _q_winDriveRemoved(p); });
auto *windowsWatcher = static_cast<QWindowsFileSystemWatcherEngine *>(native);
using WinE = QWindowsFileSystemWatcherEngine;
QObjectPrivate::connect(windowsWatcher, &WinE::driveLockForRemoval,
this, &QFileSystemWatcherPrivate::winDriveLockForRemoval);
QObjectPrivate::connect(windowsWatcher, &WinE::driveLockForRemovalFailed,
this, &QFileSystemWatcherPrivate::winDriveLockForRemovalFailed);
QObjectPrivate::connect(windowsWatcher, &WinE::driveRemoved,
this, &QFileSystemWatcherPrivate::winDriveRemoved);
#endif // Q_OS_WIN
}
}
@ -92,17 +92,10 @@ void QFileSystemWatcherPrivate::initPollerEngine()
Q_Q(QFileSystemWatcher);
poller = new QPollingFileSystemWatcherEngine(q); // that was a mouthful
QObject::connect(poller,
SIGNAL(fileChanged(QString,bool)),
q,
SLOT(_q_fileChanged(QString,bool)));
QObject::connect(poller,
SIGNAL(directoryChanged(QString,bool)),
q,
SLOT(_q_directoryChanged(QString,bool)));
connectEngine(poller);
}
void QFileSystemWatcherPrivate::_q_fileChanged(const QString &path, bool removed)
void QFileSystemWatcherPrivate::fileChanged(const QString &path, bool removed)
{
Q_Q(QFileSystemWatcher);
qCDebug(lcWatcher) << "file changed" << path << "removed?" << removed << "watching?" << files.contains(path);
@ -115,7 +108,7 @@ void QFileSystemWatcherPrivate::_q_fileChanged(const QString &path, bool removed
emit q->fileChanged(path, QFileSystemWatcher::QPrivateSignal());
}
void QFileSystemWatcherPrivate::_q_directoryChanged(const QString &path, bool removed)
void QFileSystemWatcherPrivate::directoryChanged(const QString &path, bool removed)
{
Q_Q(QFileSystemWatcher);
qCDebug(lcWatcher) << "directory changed" << path << "removed?" << removed << "watching?" << directories.contains(path);
@ -130,7 +123,7 @@ void QFileSystemWatcherPrivate::_q_directoryChanged(const QString &path, bool re
#if defined(Q_OS_WIN)
void QFileSystemWatcherPrivate::_q_winDriveLockForRemoval(const QString &path)
void QFileSystemWatcherPrivate::winDriveLockForRemoval(const QString &path)
{
// Windows: Request to lock a (removable/USB) drive for removal, release
// its paths under watch, temporarily storing them should the lock fail.
@ -147,7 +140,7 @@ void QFileSystemWatcherPrivate::_q_winDriveLockForRemoval(const QString &path)
}
}
void QFileSystemWatcherPrivate::_q_winDriveLockForRemovalFailed(const QString &path)
void QFileSystemWatcherPrivate::winDriveLockForRemovalFailed(const QString &path)
{
// Windows: Request to lock a (removable/USB) drive failed (blocked by other
// application), restore the watched paths.
@ -161,7 +154,7 @@ void QFileSystemWatcherPrivate::_q_winDriveLockForRemovalFailed(const QString &p
}
}
void QFileSystemWatcherPrivate::_q_winDriveRemoved(const QString &path)
void QFileSystemWatcherPrivate::winDriveRemoved(const QString &path)
{
// Windows: Drive finally removed, clear out paths stored in lock request.
if (!path.isEmpty())

View File

@ -34,10 +34,6 @@ public:
Q_SIGNALS:
void fileChanged(const QString &path, QPrivateSignal);
void directoryChanged(const QString &path, QPrivateSignal);
private:
Q_PRIVATE_SLOT(d_func(), void _q_fileChanged(const QString &path, bool removed))
Q_PRIVATE_SLOT(d_func(), void _q_directoryChanged(const QString &path, bool removed))
};
QT_END_NAMESPACE

View File

@ -69,13 +69,15 @@ public:
QStringList files, directories;
// private slots
void _q_fileChanged(const QString &path, bool removed);
void _q_directoryChanged(const QString &path, bool removed);
void fileChanged(const QString &path, bool removed);
void directoryChanged(const QString &path, bool removed);
void connectEngine(QFileSystemWatcherEngine *e);
#if defined(Q_OS_WIN)
void _q_winDriveLockForRemoval(const QString &);
void _q_winDriveLockForRemovalFailed(const QString &);
void _q_winDriveRemoved(const QString &);
void winDriveLockForRemoval(const QString &);
void winDriveLockForRemovalFailed(const QString &);
void winDriveRemoved(const QString &);
private:
QHash<QChar, QStringList> temporarilyRemovedPaths;

View File

@ -997,7 +997,7 @@ Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const
/*!
\internal
*/
void QFileSystemModelPrivate::_q_performDelayedSort()
void QFileSystemModelPrivate::performDelayedSort()
{
Q_Q(QFileSystemModel);
q->sort(sortColumn, sortOrder);
@ -1764,7 +1764,7 @@ bool QFileSystemModel::rmdir(const QModelIndex &aindex)
Performed quick listing and see if any files have been added or removed,
then fetch more information on visible files.
*/
void QFileSystemModelPrivate::_q_directoryChanged(const QString &directory, const QStringList &files)
void QFileSystemModelPrivate::directoryChanged(const QString &directory, const QStringList &files)
{
QFileSystemModelPrivate::QFileSystemNode *parentNode = node(directory, false);
if (parentNode->children.size() == 0)
@ -1912,7 +1912,7 @@ void QFileSystemModelPrivate::removeVisibleFile(QFileSystemNode *parentNode, int
The thread has received new information about files,
update and emit dataChanged if it has actually changed.
*/
void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path,
void QFileSystemModelPrivate::fileSystemChanged(const QString &path,
const QList<std::pair<QString, QFileInfo>> &updates)
{
#if QT_CONFIG(filesystemwatcher)
@ -2023,7 +2023,7 @@ void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path,
/*!
\internal
*/
void QFileSystemModelPrivate::_q_resolvedName(const QString &fileName, const QString &resolvedName)
void QFileSystemModelPrivate::resolvedName(const QString &fileName, const QString &resolvedName)
{
resolvedSymLinks[fileName] = resolvedName;
}
@ -2102,16 +2102,18 @@ void QFileSystemModelPrivate::init()
qRegisterMetaType<QList<std::pair<QString, QFileInfo>>>();
#if QT_CONFIG(filesystemwatcher)
q->connect(fileInfoGatherer.get(), SIGNAL(newListOfFiles(QString,QStringList)),
q, SLOT(_q_directoryChanged(QString,QStringList)));
q->connect(fileInfoGatherer.get(), SIGNAL(updates(QString,QList<std::pair<QString,QFileInfo>>)), q,
SLOT(_q_fileSystemChanged(QString,QList<std::pair<QString,QFileInfo>>)));
q->connect(fileInfoGatherer.get(), SIGNAL(nameResolved(QString,QString)),
q, SLOT(_q_resolvedName(QString,QString)));
q->connect(fileInfoGatherer.get(), SIGNAL(directoryLoaded(QString)),
q, SIGNAL(directoryLoaded(QString)));
QObjectPrivate::connect(fileInfoGatherer.get(), &QFileInfoGatherer::newListOfFiles,
this, &QFileSystemModelPrivate::directoryChanged);
QObjectPrivate::connect(fileInfoGatherer.get(), &QFileInfoGatherer::updates,
this, &QFileSystemModelPrivate::fileSystemChanged);
QObjectPrivate::connect(fileInfoGatherer.get(), &QFileInfoGatherer::nameResolved,
this, &QFileSystemModelPrivate::resolvedName);
q->connect(fileInfoGatherer.get(), &QFileInfoGatherer::directoryLoaded,
q, &QFileSystemModel::directoryLoaded);
#endif // filesystemwatcher
q->connect(&delayedSortTimer, SIGNAL(timeout()), q, SLOT(_q_performDelayedSort()), Qt::QueuedConnection);
QObjectPrivate::connect(&delayedSortTimer, &QTimer::timeout,
this, &QFileSystemModelPrivate::performDelayedSort,
Qt::QueuedConnection);
}
/*!

View File

@ -134,13 +134,6 @@ private:
Q_DECLARE_PRIVATE(QFileSystemModel)
Q_DISABLE_COPY(QFileSystemModel)
Q_PRIVATE_SLOT(d_func(), void _q_directoryChanged(const QString &directory, const QStringList &list))
Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort())
Q_PRIVATE_SLOT(d_func(),
void _q_fileSystemChanged(const QString &path,
const QList<std::pair<QString, QFileInfo>> &))
Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName))
friend class QFileDialogPrivate;
};

View File

@ -250,10 +250,10 @@ public:
QString type(const QModelIndex &index) const;
QString time(const QModelIndex &index) const;
void _q_directoryChanged(const QString &directory, const QStringList &list);
void _q_performDelayedSort();
void _q_fileSystemChanged(const QString &path, const QList<std::pair<QString, QFileInfo>> &);
void _q_resolvedName(const QString &fileName, const QString &resolvedName);
void directoryChanged(const QString &directory, const QStringList &list);
void performDelayedSort();
void fileSystemChanged(const QString &path, const QList<std::pair<QString, QFileInfo>> &);
void resolvedName(const QString &fileName, const QString &resolvedName);
QDir rootDir;
#if QT_CONFIG(filesystemwatcher)