123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * 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
- #if !defined(Q_MOC_RUN)
- #include <AzCore/std/function/function_fwd.h>
- #include <AzQtComponents/Components/SearchLineEdit.h>
- #include <GemCatalog/GemModel.h>
- #include <GemCatalog/GemSortFilterProxyModel.h>
- #include <TagWidget.h>
- #include <DownloadController.h>
- #include <QFrame>
- #include <QScrollArea>
- #endif
- QT_FORWARD_DECLARE_CLASS(QPushButton)
- QT_FORWARD_DECLARE_CLASS(QLabel)
- QT_FORWARD_DECLARE_CLASS(QVBoxLayout)
- QT_FORWARD_DECLARE_CLASS(QHBoxLayout)
- QT_FORWARD_DECLARE_CLASS(QHideEvent)
- QT_FORWARD_DECLARE_CLASS(QMoveEvent)
- QT_FORWARD_DECLARE_CLASS(QMovie)
- namespace O3DE::ProjectManager
- {
- class GemCartWidget
- : public QScrollArea
- {
- Q_OBJECT
- public:
- GemCartWidget(GemModel* gemModel, DownloadController* downloadController, QWidget* parent = nullptr);
- public slots:
- void ObjectDownloadAdded(const QString& gemName, DownloadController::DownloadObjectType objectType);
- void ObjectDownloadRemoved(const QString& gemName, DownloadController::DownloadObjectType objectType);
- void ObjectDownloadProgress(const QString& gemName, DownloadController::DownloadObjectType objectType, int bytesDownloaded, int totalBytes);
- private:
- QVector<Tag> GetTagsFromModelIndices(const QVector<QModelIndex>& gems) const;
- using GetTagIndicesCallback = AZStd::function<QVector<QModelIndex>()>;
- void CreateGemSection(const QString& singularTitle, const QString& pluralTitle, GetTagIndicesCallback getTagIndices);
- void CreateDownloadSection();
- void OnCancelDownloadActivated(const QString& link);
- QVBoxLayout* m_layout = nullptr;
- GemModel* m_gemModel = nullptr;
- DownloadController* m_downloadController = nullptr;
- QWidget* m_downloadSectionWidget = nullptr;
- QWidget* m_downloadingListWidget = nullptr;
- inline constexpr static int s_width = 240;
- };
- class CartButton
- : public QWidget
- {
- Q_OBJECT // AUTOMOC
- public:
- CartButton(GemModel* gemModel, DownloadController* downloadController, QWidget* parent = nullptr);
- ~CartButton();
- void ShowGemCart();
- signals:
- void UpdateGemCart(QWidget* gemCart);
- private:
- void mousePressEvent(QMouseEvent* event) override;
- void hideEvent(QHideEvent*) override;
- GemModel* m_gemModel = nullptr;
- QHBoxLayout* m_layout = nullptr;
- QLabel* m_countLabel = nullptr;
- QPushButton* m_dropDownButton = nullptr;
- GemCartWidget* m_gemCart = nullptr;
- DownloadController* m_downloadController = nullptr;
- inline constexpr static int s_iconSize = 24;
- inline constexpr static int s_arrowDownIconSize = 8;
- };
- class GemCatalogHeaderWidget
- : public QFrame
- {
- Q_OBJECT // AUTOMOC
- public:
- explicit GemCatalogHeaderWidget(GemModel* gemModel, GemSortFilterProxyModel* filterProxyModel, DownloadController* downloadController, QWidget* parent = nullptr);
- ~GemCatalogHeaderWidget() = default;
- void ReinitForProject();
- public slots:
- void GemDownloadAdded(const QString& gemName, DownloadController::DownloadObjectType objectType);
- void GemDownloadRemoved(const QString& gemName, DownloadController::DownloadObjectType objectType);
- void GemCartShown(bool state = false);
- signals:
- void AddGem();
- void CreateGem();
- void OpenGemsRepo();
- void RefreshGems(bool refreshRemoteRepos);
- void UpdateGemCart(QWidget* gemCart);
- protected slots:
- void paintEvent(QPaintEvent* event) override;
-
- private:
- AzQtComponents::SearchLineEdit* m_filterLineEdit = nullptr;
- inline constexpr static int s_height = 60;
- DownloadController* m_downloadController = nullptr;
- QLabel* m_downloadSpinner = nullptr;
- QLabel* m_downloadLabel = nullptr;
- QMovie* m_downloadSpinnerMovie = nullptr;
- CartButton* m_cartButton = nullptr;
- bool m_showGemCart = false;
- };
- } // namespace O3DE::ProjectManager
|