2
0

ComparisonDataWidget.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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 <AzCore/std/smart_ptr/shared_ptr.h>
  11. #include <AzCore/std/smart_ptr/make_shared.h>
  12. #include <AzQtComponents/Components/Widgets/Card.h>
  13. #include <AzToolsFramework/Asset/AssetBundler.h>
  14. #include <QWidget>
  15. #endif
  16. namespace Ui
  17. {
  18. class ComparisonDataWidget;
  19. }
  20. namespace AssetBundler
  21. {
  22. //! Widget for displaying and editing a single Comparison Step inside a Comparison Rules file.
  23. class ComparisonDataWidget
  24. : public QWidget
  25. {
  26. Q_OBJECT
  27. public:
  28. explicit ComparisonDataWidget(
  29. AZStd::shared_ptr<AzToolsFramework::AssetFileInfoListComparison> comparisonList,
  30. size_t comparisonDataIndex,
  31. const AZStd::string& defaultAssetListFileDirectory,
  32. QWidget* parent = nullptr);
  33. virtual ~ComparisonDataWidget() {}
  34. enum ComparisonTypeIndex : int
  35. {
  36. Default = 0,
  37. Delta,
  38. Union,
  39. Intersection,
  40. Complement,
  41. Wildcard,
  42. Regex,
  43. MAX
  44. };
  45. size_t GetComparisonDataIndex() { return m_comparisonDataIndex; }
  46. void UpdateListOfTokenNames();
  47. Q_SIGNALS:
  48. void comparisonDataChanged();
  49. void comparisonDataTokenNameChanged(size_t comparisonDataIndex);
  50. private:
  51. void SetAllDisplayValues(const AzToolsFramework::AssetFileInfoListComparison::ComparisonData& comparisonData);
  52. void OnNameLineEditChanged();
  53. void UpdateOnComparisonTypeChanged(bool isFilePatternOperation);
  54. void InitComparisonTypeComboBox(const AzToolsFramework::AssetFileInfoListComparison::ComparisonData& comparisonData);
  55. void OnComparisonTypeComboBoxChanged(int index);
  56. void OnFilePatternLineEditChanged();
  57. void OnFirstInputComboBoxChanged(int index);
  58. void SetFirstInputFileVisibility(bool isVisible);
  59. void OnFirstInputBrowseButtonPressed();
  60. void OnSecondInputComboBoxChanged(int index);
  61. void SetSecondInputFileVisibility(bool isVisible);
  62. void OnSecondInputBrowseButtonPressed();
  63. QString BrowseButtonPressed();
  64. bool IsComparisonDataIndexValid();
  65. QString RemoveTokenCharFromString(const AZStd::string& tokenName);
  66. QSharedPointer<Ui::ComparisonDataWidget> m_ui;
  67. AZStd::shared_ptr<AzToolsFramework::AssetFileInfoListComparison> m_comparisonList;
  68. size_t m_comparisonDataIndex;
  69. AZStd::string m_defaultAssetListFileDirectory;
  70. QStringList m_inputTokenNameList;
  71. QString m_outputAssetListFileAbsolutePath;
  72. bool m_isFirstInputFileNameVisible = false;
  73. bool m_isSecondInputFileNameVisible = false;
  74. };
  75. class MouseWheelEventFilter
  76. : public QObject
  77. {
  78. Q_OBJECT
  79. public:
  80. explicit MouseWheelEventFilter(QObject* parent) : QObject(parent) {}
  81. protected:
  82. bool eventFilter(QObject* obj, QEvent* ev) override;
  83. };
  84. //! Wrapper widget that controls the expansion state and signals that trigger a context menu of a ComparisonDataWidget.
  85. class ComparisonDataCard
  86. : public AzQtComponents::Card
  87. {
  88. Q_OBJECT
  89. public:
  90. explicit ComparisonDataCard(
  91. AZStd::shared_ptr<AzToolsFramework::AssetFileInfoListComparison> comparisonList,
  92. size_t comparisonDataIndex,
  93. const AZStd::string& defaultAssetListFileDirectory,
  94. QWidget* parent = nullptr);
  95. virtual ~ComparisonDataCard() {}
  96. ComparisonDataWidget* GetComparisonDataWidget() { return m_comparisonDataWidget; }
  97. Q_SIGNALS:
  98. void comparisonDataCardContextMenuRequested(size_t comparisonDataIndex, const QPoint& position);
  99. private:
  100. ComparisonDataWidget* m_comparisonDataWidget = nullptr;
  101. private slots:
  102. void OnContextMenuRequested(const QPoint& position);
  103. };
  104. } // namespace AssetBundler