123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #pragma once
- #include <source/models/AssetBundlerAbstractFileTableModel.h>
- #include <QDateTime>
- #include <QSharedPointer>
- namespace AssetBundler
- {
- class AssetListTableModel;
- struct AssetListFileInfo
- {
- /**
- * Stores information about an Asset List File on disk.
- *
- * @param absolutePath The absolute path of the Asset List File
- * @param fileName The name of the Asset List File. This does not include the platform ID
- * @param platform The platform for the Asset List File
- */
- AssetListFileInfo(const AZStd::string& absolutePath, const QString& fileName, const AZStd::string& platform);
- AZStd::string m_absolutePath;
- QDateTime m_fileCreationTime;
- /// Use QString for display purpose. This can help to avoid losts of string conversion
- QString m_fileName;
- QString m_platform;
- QSharedPointer<AssetListTableModel> m_assetListModel;
- };
- using AssetListFileInfoPtr = AZStd::shared_ptr<AssetListFileInfo>;
- /// Stores AssetListFileInfo, using the absolute path (without the drive letter) of the Asset List file as the key
- using AssetListFileInfoMap = AZStd::unordered_map<AZStd::string, AssetListFileInfoPtr>;
- class AssetListFileTableModel
- : public AssetBundlerAbstractFileTableModel
- {
- public:
- explicit AssetListFileTableModel();
- virtual ~AssetListFileTableModel() {}
- QSharedPointer<AssetListTableModel> GetAssetListFileContents(const QModelIndex& index);
- //////////////////////////////////////////////////////////////////////////
- // AssetBundlerAbstractFileTableModel overrides
- AZStd::vector<AZStd::string> CreateNewFiles(
- const AZStd::string& /*absoluteFilePath*/,
- const AzFramework::PlatformFlags& /*platforms*/,
- const QString& /*project*/) override { return {}; }
- bool DeleteFile(const QModelIndex& index) override;
- void LoadFile(const AZStd::string& absoluteFilePath, const AZStd::string& projectName = "", bool isDefaultFile = false) override;
- bool WriteToDisk(const AZStd::string& key) override;
- AZStd::string GetFileAbsolutePath(const QModelIndex& index) const override;
- int GetFileNameColumnIndex() const override;
- int GetTimeStampColumnIndex() const override;
- //////////////////////////////////////////////////////////////////////////
- // QAbstractListModel overrides
- int columnCount(const QModelIndex& parent = QModelIndex()) const override;
- QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
- QVariant data(const QModelIndex& index, int role) const override;
- //////////////////////////////////////////////////////////////////////////
- enum Column
- {
- ColumnFileName,
- ColumnPlatform,
- ColumnFileCreationTime,
- Max
- };
- private:
- AZ::Outcome<AssetListFileInfoPtr, void> GetAssetFileInfo(const QModelIndex& index) const;
- AssetListFileInfoMap m_assetListFileInfoMap;
- };
- } // namespace AssetBundler
|