RulesTabWidget.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. #if !defined(Q_MOC_RUN)
  10. #include <source/ui/AssetBundlerTabWidget.h>
  11. #include <AzCore/std/smart_ptr/shared_ptr.h>
  12. #include <QAction>
  13. #include <QModelIndex>
  14. #include <QSharedPointer>
  15. #include <QString>
  16. #include <QWidget>
  17. #endif
  18. namespace Ui
  19. {
  20. class RulesTabWidget;
  21. }
  22. class QItemSelection;
  23. namespace AzToolsFramework
  24. {
  25. class AssetFileInfoListComparison;
  26. }
  27. namespace AssetBundler
  28. {
  29. class GUIApplicationManager;
  30. class RulesFileTableModel;
  31. class ComparisonDataCard;
  32. class ComparisonDataWidget;
  33. class RulesTabWidget
  34. : public AssetBundlerTabWidget
  35. {
  36. Q_OBJECT
  37. public:
  38. explicit RulesTabWidget(QWidget* parent, GUIApplicationManager* guiApplicationManager);
  39. virtual ~RulesTabWidget() {}
  40. QString GetTabTitle() override { return tr("Rules"); }
  41. QString GetFileTypeDisplayName() override { return tr("Rules file"); }
  42. AssetBundlingFileType GetFileType() override { return AssetBundlingFileType::RulesFileType; }
  43. bool HasUnsavedChanges() override;
  44. void Reload() override;
  45. bool SaveCurrentSelection() override;
  46. bool SaveAll() override;
  47. void SetModelDataSource() override;
  48. AzQtComponents::TableView* GetFileTableView() override;
  49. QModelIndex GetSelectedFileTableIndex() override;
  50. AssetBundlerAbstractFileTableModel* GetFileTableModel() override;
  51. void SetActiveProjectLabel(const QString& labelText) override;
  52. void ApplyConfig() override;
  53. void FileSelectionChanged(
  54. const QItemSelection& /*selected*/ = QItemSelection(),
  55. const QItemSelection& /*deselected*/ = QItemSelection()) override;
  56. private:
  57. void OnNewFileButtonPressed();
  58. void OnRunRuleButtonPressed();
  59. void MarkFileChanged();
  60. void RebuildComparisonDataCardList();
  61. void PopulateComparisonDataCardList();
  62. void CreateComparisonDataCard(
  63. AZStd::shared_ptr<AzToolsFramework::AssetFileInfoListComparison> comparisonList,
  64. size_t comparisonDataIndex);
  65. void RemoveAllComparisonDataCards();
  66. void AddNewComparisonStep();
  67. void RemoveComparisonStep(size_t comparisonDataIndex);
  68. void MoveComparisonStep(size_t startingIndex, size_t destinationIndex);
  69. void OnAnyTokenNameChanged(size_t comparisonDataIndex);
  70. QSharedPointer<Ui::RulesTabWidget> m_ui;
  71. QSharedPointer<RulesFileTableModel> m_fileTableModel;
  72. QModelIndex m_selectedFileTableIndex;
  73. AZStd::shared_ptr<AzToolsFramework::AssetFileInfoListComparison> m_selectedComparisonRules;
  74. AZStd::vector<ComparisonDataCard*> m_comparisonDataCardList;
  75. private slots:
  76. void OnComparisonDataCardContextMenuRequested(size_t comparisonDataIndex, const QPoint& position);
  77. };
  78. } // namespace AssetBundler