/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #pragma once #include <QObject> #include <QString> #include <QMap> #include <native/AssetDatabase/AssetDatabase.h> #include <native/assetprocessor.h> namespace AzToolsFramework { namespace AssetDatabase { class FileDatabaseEntry; } } namespace AssetProcessor { class PlatformConfiguration; class FileProcessor : public QObject { Q_OBJECT public: explicit FileProcessor(PlatformConfiguration* config); ~FileProcessor(); public Q_SLOTS: //! AssetScanner changed its status void OnAssetScannerStatusChange(AssetScanningStatus status); //! AssetScanner found a file void AssessFilesFromScanner(QSet<AssetFileInfo> files); //! AssetScanner found a folder void AssessFoldersFromScanner(QSet<AssetFileInfo> folders); //! FileWatcher detected added file void AssessAddedFile(QString fileName); //! FileWatcher detected removed file void AssessDeletedFile(QString fileName); //! Synchronize AssetScanner data with Files table void Sync(); //! its time to shut down! void QuitRequested(); Q_SIGNALS: void ReadyToQuit(QObject* source); //After receiving QuitRequested, you must send this when its safe private: PlatformConfiguration* m_platformConfig = nullptr; AZStd::shared_ptr<AssetDatabaseConnection> m_connection; //! Files and folders located by AssetScanner during a scan QList<AssetFileInfo> m_filesInAssetScanner; QString m_normalizedCacheRootPath; bool m_shutdownSignalled = false; bool GetRelativePath(QString& filePath, QString& relativeFileName, QString& scanFolder) const; bool DeleteFileRecursive(const AzToolsFramework::AssetDatabase::FileDatabaseEntry& file) const; }; } // namespace AssetProcessor