SceneSettingsCard.h 3.8 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/Debug/TraceMessageBus.h>
  11. #include <AzCore/std/smart_ptr/shared_ptr.h>
  12. #include <AzCore/std/string/string.h>
  13. #include <AzToolsFramework/Debug/TraceContextMultiStackHandler.h>
  14. #include <AzQtComponents/Components/StyledDetailsTableModel.h>
  15. #include <AzQtComponents/Components/Widgets/Card.h>
  16. #include <AzQtComponents/Components/Widgets/CardHeader.h>
  17. #include <SceneAPI/SceneUI/SceneUIConfiguration.h>
  18. #include <QMap>
  19. #include <QPair>
  20. #include <QString>
  21. #include <QVector>
  22. #endif
  23. class QSvgWidget;
  24. namespace AzQtComponents
  25. {
  26. class StyledDetailsTableView;
  27. class TableView;
  28. }
  29. namespace AZ
  30. {
  31. namespace SceneAPI
  32. {
  33. namespace SceneUI
  34. {
  35. class ProcessingHandler;
  36. }
  37. }
  38. }
  39. namespace AzToolsFramework
  40. {
  41. namespace Logging
  42. {
  43. class LogEntry;
  44. }
  45. }
  46. class QPushButton;
  47. class SceneSettingsCardHeader : public AzQtComponents::CardHeader
  48. {
  49. Q_OBJECT
  50. public:
  51. SceneSettingsCardHeader(QWidget* parent = nullptr);
  52. void SetCanClose(bool canClose);
  53. private:
  54. void triggerCloseButton();
  55. QPushButton* m_closeButton = nullptr;
  56. QSvgWidget* m_busySpinner = nullptr;
  57. friend class SceneSettingsCard;
  58. };
  59. AZ_PUSH_DISABLE_DLL_EXPORT_BASECLASS_WARNING
  60. AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
  61. class SCENE_UI_API SceneSettingsCard : public AzQtComponents::Card, public AZ::Debug::TraceMessageBus::Handler
  62. {
  63. AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
  64. AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
  65. Q_OBJECT
  66. public:
  67. enum class Layout
  68. {
  69. Loading,
  70. Resetting,
  71. Exporting
  72. };
  73. SceneSettingsCard(AZ::Uuid traceTag, QString fileTracked, Layout layout, QWidget* parent = nullptr);
  74. ~SceneSettingsCard();
  75. void SetAndStartProcessingHandler(const AZStd::shared_ptr<AZ::SceneAPI::SceneUI::ProcessingHandler>& handler);
  76. bool OnPrintf(const char* window, const char* message) override;
  77. bool OnError(const char* window, const char* message) override;
  78. bool OnWarning(const char* window, const char* message) override;
  79. bool OnAssert(const char* message) override;
  80. enum class State
  81. {
  82. Loading,
  83. Processing,
  84. Done,
  85. };
  86. void SetState(State newState);
  87. public Q_SLOTS:
  88. void AddLogEntry(const AzToolsFramework::Logging::LogEntry& logEntry);
  89. void OnSetStatusMessage(const AZStd::string& message);
  90. void OnProcessingComplete();
  91. signals:
  92. void ProcessingCompleted();
  93. private:
  94. enum class CompletionState
  95. {
  96. Success,
  97. Warning,
  98. Error,
  99. Failure
  100. };
  101. bool ShouldProcessMessage();
  102. void UpdateCompletionState(CompletionState newState);
  103. void CopyTraceContext(AzQtComponents::StyledDetailsTableModel::TableEntry& entry) const;
  104. QString GetTimeNowAsString();
  105. void ShowLogContextMenu(const QPoint& pos);
  106. void AddLogTableEntry(AzQtComponents::StyledDetailsTableModel::TableEntry& entry);
  107. AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
  108. QMap<int, QVector<QPair<QString, QString>>> m_additionalLogDetails;
  109. AzToolsFramework::Debug::TraceContextMultiStackHandler m_traceStackHandler;
  110. AZ::Uuid m_traceTag;
  111. AzQtComponents::StyledDetailsTableModel* m_reportModel = nullptr;
  112. AzQtComponents::TableView* m_reportView = nullptr;
  113. AZStd::shared_ptr<AZ::SceneAPI::SceneUI::ProcessingHandler> m_targetHandler;
  114. AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
  115. SceneSettingsCardHeader* m_settingsHeader = nullptr;
  116. CompletionState m_completionState = CompletionState::Success;
  117. State m_sceneCardState = State::Loading;
  118. QString m_fileTracked;
  119. int m_warningCount = 0;
  120. int m_errorCount = 0;
  121. };