AssetTreeModel.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AssetDatabase/AssetDatabase.h>
  10. #include <AzCore/std/smart_ptr/unique_ptr.h>
  11. #include <AzToolsFramework/API/AssetDatabaseBus.h>
  12. #include <native/utilities/ApplicationManagerAPI.h>
  13. #include <QAbstractItemModel>
  14. #include <QFileIconProvider>
  15. #include <QItemSelectionModel>
  16. namespace AssetProcessor
  17. {
  18. class AssetTreeItem;
  19. class AssetTreeModel :
  20. public QAbstractItemModel,
  21. AzToolsFramework::AssetDatabase::AssetDatabaseNotificationBus::Handler,
  22. AssetProcessor::ApplicationManagerNotifications::Bus::Handler
  23. {
  24. public:
  25. AssetTreeModel(AZStd::shared_ptr<AzToolsFramework::AssetDatabase::AssetDatabaseConnection> sharedDbConnection, QObject *parent = nullptr);
  26. virtual ~AssetTreeModel();
  27. // ApplicationManagerNotifications::Bus::Handler
  28. void ApplicationShutdownRequested() override;
  29. // QAbstractItemModel
  30. QModelIndex index(int row, int column, const QModelIndex &parent) const override;
  31. int rowCount(const QModelIndex &parent = QModelIndex()) const override;
  32. int columnCount(const QModelIndex &parent = QModelIndex()) const override;
  33. QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
  34. QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
  35. bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
  36. QModelIndex parent(const QModelIndex &index) const override;
  37. bool hasChildren(const QModelIndex &parent) const override;
  38. Qt::ItemFlags flags(const QModelIndex &index) const override;
  39. void Reset();
  40. static QFlags<QItemSelectionModel::SelectionFlag> GetAssetTreeSelectionFlags();
  41. protected:
  42. // Called by reset, while a Qt model reset is active.
  43. virtual void ResetModel() = 0;
  44. AZStd::unique_ptr<AssetTreeItem> m_root;
  45. AZStd::shared_ptr<AzToolsFramework::AssetDatabase::AssetDatabaseConnection> m_sharedDbConnection;
  46. QIcon m_errorIcon;
  47. QIcon m_folderIcon;
  48. QIcon m_fileIcon;
  49. };
  50. }