feat: watch sub directories for mods
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
parent
6dcf34acdc
commit
02bf086c09
@ -39,7 +39,6 @@
|
|||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QMimeData>
|
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
|
||||||
BlockedModsDialog::BlockedModsDialog(QWidget* parent, const QString& title, const QString& text, QList<BlockedMod>& mods)
|
BlockedModsDialog::BlockedModsDialog(QWidget* parent, const QString& title, const QString& text, QList<BlockedMod>& mods)
|
||||||
@ -172,7 +171,7 @@ void BlockedModsDialog::update()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Signal fired when a watched direcotry has changed
|
/// @brief Signal fired when a watched directory has changed
|
||||||
/// @param path the path to the changed directory
|
/// @param path the path to the changed directory
|
||||||
void BlockedModsDialog::directoryChanged(QString path)
|
void BlockedModsDialog::directoryChanged(QString path)
|
||||||
{
|
{
|
||||||
@ -186,8 +185,22 @@ void BlockedModsDialog::setupWatch()
|
|||||||
{
|
{
|
||||||
const QString downloadsFolder = APPLICATION->settings()->get("DownloadsDir").toString();
|
const QString downloadsFolder = APPLICATION->settings()->get("DownloadsDir").toString();
|
||||||
const QString modsFolder = APPLICATION->settings()->get("CentralModsDir").toString();
|
const QString modsFolder = APPLICATION->settings()->get("CentralModsDir").toString();
|
||||||
m_watcher.addPath(downloadsFolder);
|
watchPath(downloadsFolder, true);
|
||||||
m_watcher.addPath(modsFolder);
|
watchPath(modsFolder, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlockedModsDialog::watchPath(QString path, bool watch_subdirectories)
|
||||||
|
{
|
||||||
|
m_watcher.addPath(path);
|
||||||
|
|
||||||
|
if (!watch_subdirectories)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QDirIterator it(path, QDirIterator::Subdirectories);
|
||||||
|
while (it.hasNext()) {
|
||||||
|
QString dir = it.next();
|
||||||
|
watchPath(it.next(), watch_subdirectories);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief scan all watched folder
|
/// @brief scan all watched folder
|
||||||
@ -221,7 +234,7 @@ void BlockedModsDialog::scanPath(QString path, bool start_task)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief add a hashing task for the file located at path, add the path to the pending set if the hasing task is already running
|
/// @brief add a hashing task for the file located at path, add the path to the pending set if the hashing task is already running
|
||||||
/// @param path the path to the local file being hashed
|
/// @param path the path to the local file being hashed
|
||||||
void BlockedModsDialog::addHashTask(QString path)
|
void BlockedModsDialog::addHashTask(QString path)
|
||||||
{
|
{
|
||||||
@ -328,7 +341,7 @@ void BlockedModsDialog::validateMatchedMods()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief run hash task or mark a pending run if it is already runing
|
/// @brief run hash task or mark a pending run if it is already running
|
||||||
void BlockedModsDialog::runHashTask()
|
void BlockedModsDialog::runHashTask()
|
||||||
{
|
{
|
||||||
if (!m_hashing_task->isRunning()) {
|
if (!m_hashing_task->isRunning()) {
|
||||||
|
@ -79,6 +79,7 @@ class BlockedModsDialog : public QDialog {
|
|||||||
void update();
|
void update();
|
||||||
void directoryChanged(QString path);
|
void directoryChanged(QString path);
|
||||||
void setupWatch();
|
void setupWatch();
|
||||||
|
void watchPath(QString path, bool watch_subdirectories = false);
|
||||||
void scanPaths();
|
void scanPaths();
|
||||||
void scanPath(QString path, bool start_task);
|
void scanPath(QString path, bool start_task);
|
||||||
void addHashTask(QString path);
|
void addHashTask(QString path);
|
||||||
|
Loading…
Reference in New Issue
Block a user