#pragma once #include #include #include #include #include namespace Incart::Net::WebApi { class DirectoryQueue { private: QMutex m_mutex; QList m_directoryNames; public: DirectoryQueue() { } void AddName(const QString& name) { m_directoryNames.append(name); } void SetLastName(const QString& name) { m_mutex.lock(); for (auto it = m_directoryNames.begin(); it != m_directoryNames.end(); it++) { if (name.compare(*it, Qt::CaseInsensitive) == 0) { m_directoryNames.erase(it); break; } } m_directoryNames.insert(0, name); m_mutex.unlock(); } QString GetDirectoryName(const QString& directoryRoot, const QString& filePath) { QString directoryName = ""; m_mutex.lock(); for (auto it = m_directoryNames.begin(); it != m_directoryNames.end(); it++) { QString fileFullPath = directoryRoot + "/" + *it + "/" + filePath; if (QFileInfo::exists(fileFullPath)) { directoryName = *it; break; } } m_mutex.unlock(); return directoryName; } }; } // namespace Incart::Net::WebApi