BuilderListModel.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. #include <native/ui/BuilderListModel.h>
  9. #include <utilities/AssetUtilEBusHelper.h>
  10. int BuilderListModel::rowCount(const QModelIndex& /*parent*/) const
  11. {
  12. AssetProcessor::BuilderInfoList builders;
  13. AssetProcessor::AssetBuilderInfoBus::Broadcast(&AssetProcessor::AssetBuilderInfoBus::Events::GetAllBuildersInfo, builders);
  14. return aznumeric_caster(builders.size());
  15. }
  16. QVariant BuilderListModel::data(const QModelIndex& index, int role) const
  17. {
  18. AssetProcessor::BuilderInfoList builders;
  19. AssetProcessor::AssetBuilderInfoBus::Broadcast(&AssetProcessor::AssetBuilderInfoBus::Events::GetAllBuildersInfo, builders);
  20. AZ_Assert(index.isValid(), "BuilderListModel index out of bounds");
  21. const auto& assetBuilderDesc = builders[index.row()];
  22. if (role == Qt::DisplayRole)
  23. {
  24. return QString(assetBuilderDesc.m_name.c_str());
  25. }
  26. return {};
  27. }
  28. QModelIndex BuilderListModel::GetIndexForBuilder(const AZ::Uuid& builderUuid)
  29. {
  30. AssetProcessor::BuilderInfoList builders;
  31. AssetProcessor::AssetBuilderInfoBus::Broadcast(&AssetProcessor::AssetBuilderInfoBus::Events::GetAllBuildersInfo, builders);
  32. for (int builderRow = 0; builderRow < builders.size(); ++builderRow)
  33. {
  34. if (builders[builderRow].m_busId == builderUuid)
  35. {
  36. return createIndex(builderRow, 0);
  37. }
  38. }
  39. return QModelIndex();
  40. }
  41. void BuilderListModel::Reset()
  42. {
  43. beginResetModel();
  44. endResetModel();
  45. }
  46. bool BuilderListSortFilterProxy::lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const
  47. {
  48. return sourceModel()->data(source_left).toString().compare(sourceModel()->data(source_right).toString(), Qt::CaseInsensitive) < 0;
  49. }