void scanDirectory(const CFileSystemObject& root, const std::function<void(const CFileSystemObject&)>& observer, const std::atomic<bool>& abort)
{
	if (observer)
		observer(root);

	if (!root.isDir() || abort)
		return;

	const auto list = root.qDir().entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot | QDir::System);
	for (const auto& entry : list)
	{
		scanDirectory(CFileSystemObject(entry), observer, abort);

		if (abort)
			return;
	}
}