Fix selected gem filtering

Signed-off-by: nggieber <nggieber@amazon.com>
monroegm-disable-blank-issue-2
nggieber 4 years ago
parent b3c9573b10
commit 866fd8a420

@ -225,21 +225,22 @@ namespace O3DE::ProjectManager
QVector<QString> elementNames; QVector<QString> elementNames;
QVector<int> elementCounts; QVector<int> elementCounts;
const int totalGems = m_gemModel->rowCount(); const int totalGems = m_gemModel->rowCount();
const int selectedGemTotal = m_gemModel->TotalAddedGems(); const int selectedGemTotal = m_gemModel->GatherGemsToBeAdded(/*includeDependencies=*/true).size();
const int unselectedGemTotal = m_gemModel->GatherGemsToBeRemoved(/*includeDependencies=*/true).size();
const int enabledGemTotal = m_gemModel->TotalAddedGems(/*includeDependencies=*/true); const int enabledGemTotal = m_gemModel->TotalAddedGems(/*includeDependencies=*/true);
elementNames.push_back(GemSortFilterProxyModel::GetGemSelectedString(GemSortFilterProxyModel::GemSelected::Unselected));
elementCounts.push_back(totalGems - selectedGemTotal);
elementNames.push_back(GemSortFilterProxyModel::GetGemSelectedString(GemSortFilterProxyModel::GemSelected::Selected)); elementNames.push_back(GemSortFilterProxyModel::GetGemSelectedString(GemSortFilterProxyModel::GemSelected::Selected));
elementCounts.push_back(selectedGemTotal); elementCounts.push_back(selectedGemTotal);
elementNames.push_back(GemSortFilterProxyModel::GetGemActiveString(GemSortFilterProxyModel::GemActive::Inactive)); elementNames.push_back(GemSortFilterProxyModel::GetGemSelectedString(GemSortFilterProxyModel::GemSelected::Unselected));
elementCounts.push_back(totalGems - enabledGemTotal); elementCounts.push_back(unselectedGemTotal);
elementNames.push_back(GemSortFilterProxyModel::GetGemActiveString(GemSortFilterProxyModel::GemActive::Active)); elementNames.push_back(GemSortFilterProxyModel::GetGemActiveString(GemSortFilterProxyModel::GemActive::Active));
elementCounts.push_back(enabledGemTotal); elementCounts.push_back(enabledGemTotal);
elementNames.push_back(GemSortFilterProxyModel::GetGemActiveString(GemSortFilterProxyModel::GemActive::Inactive));
elementCounts.push_back(totalGems - enabledGemTotal);
bool wasCollapsed = false; bool wasCollapsed = false;
if (m_statusFilter) if (m_statusFilter)
{ {
@ -262,43 +263,50 @@ namespace O3DE::ProjectManager
const QList<QAbstractButton*> buttons = m_statusFilter->GetButtonGroup()->buttons(); const QList<QAbstractButton*> buttons = m_statusFilter->GetButtonGroup()->buttons();
QAbstractButton* unselectedButton = buttons[0]; QAbstractButton* selectedButton = buttons[0];
QAbstractButton* selectedButton = buttons[1]; QAbstractButton* unselectedButton = buttons[1];
unselectedButton->setChecked(m_filterProxyModel->GetGemSelected() == GemSortFilterProxyModel::GemSelected::Unselected); selectedButton->setChecked(m_filterProxyModel->GetGemSelected() == GemSortFilterProxyModel::GemSelected::Selected);
selectedButton->setChecked(m_filterProxyModel->GetGemSelected() == GemSortFilterProxyModel::GemSelected::Selected); unselectedButton->setChecked(m_filterProxyModel->GetGemSelected() == GemSortFilterProxyModel::GemSelected::Unselected);
auto updateGemSelection = [=]([[maybe_unused]] bool checked) auto updateGemSelection = [=]([[maybe_unused]] bool checked)
{ {
if (unselectedButton->isChecked() && !selectedButton->isChecked()) if (!unselectedButton->isChecked() && selectedButton->isChecked())
{ {
m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::Unselected); m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::Selected);
} }
else if (!unselectedButton->isChecked() && selectedButton->isChecked()) else if (unselectedButton->isChecked() && !selectedButton->isChecked())
{ {
m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::Selected); m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::Unselected);
} }
else else
{ {
m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::NoFilter); if (unselectedButton->isChecked() && selectedButton->isChecked())
{
m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::Both);
}
else
{
m_filterProxyModel->SetGemSelected(GemSortFilterProxyModel::GemSelected::NoFilter);
}
} }
}; };
connect(unselectedButton, &QAbstractButton::toggled, this, updateGemSelection); connect(unselectedButton, &QAbstractButton::toggled, this, updateGemSelection);
connect(selectedButton, &QAbstractButton::toggled, this, updateGemSelection); connect(selectedButton, &QAbstractButton::toggled, this, updateGemSelection);
QAbstractButton* inactiveButton = buttons[2]; QAbstractButton* activeButton = buttons[2];
QAbstractButton* activeButton = buttons[3]; QAbstractButton* inactiveButton = buttons[3];
inactiveButton->setChecked(m_filterProxyModel->GetGemActive() == GemSortFilterProxyModel::GemActive::Inactive); activeButton->setChecked(m_filterProxyModel->GetGemActive() == GemSortFilterProxyModel::GemActive::Active);
activeButton->setChecked(m_filterProxyModel->GetGemActive() == GemSortFilterProxyModel::GemActive::Active); inactiveButton->setChecked(m_filterProxyModel->GetGemActive() == GemSortFilterProxyModel::GemActive::Inactive);
auto updateGemActive = [=]([[maybe_unused]] bool checked) auto updateGemActive = [=]([[maybe_unused]] bool checked)
{ {
if (inactiveButton->isChecked() && !activeButton->isChecked()) if (!inactiveButton->isChecked() && activeButton->isChecked())
{ {
m_filterProxyModel->SetGemActive(GemSortFilterProxyModel::GemActive::Inactive); m_filterProxyModel->SetGemActive(GemSortFilterProxyModel::GemActive::Active);
} }
else if (!inactiveButton->isChecked() && activeButton->isChecked()) else if (inactiveButton->isChecked() && !activeButton->isChecked())
{ {
m_filterProxyModel->SetGemActive(GemSortFilterProxyModel::GemActive::Active); m_filterProxyModel->SetGemActive(GemSortFilterProxyModel::GemActive::Inactive);
} }
else else
{ {

@ -50,11 +50,26 @@ namespace O3DE::ProjectManager
} }
} }
// Gem selected // Gem selected
if (m_gemSelectedFilter != GemSelected::NoFilter) if (m_gemSelectedFilter == GemSelected::Selected)
{ {
const GemSelected sourceGemStatus = static_cast<GemSelected>(GemModel::IsAdded(sourceIndex)); if (!GemModel::NeedsToBeAdded(sourceIndex, true))
if (m_gemSelectedFilter != sourceGemStatus) {
return false;
}
}
// Gem unselected
else if (m_gemSelectedFilter == GemSelected::Unselected)
{
if (!GemModel::NeedsToBeRemoved(sourceIndex, true))
{
return false;
}
}
// Gem selected or unselected
else if (m_gemSelectedFilter == GemSelected::Both)
{
if (!GemModel::NeedsToBeAdded(sourceIndex, true) && !GemModel::NeedsToBeRemoved(sourceIndex, true))
{ {
return false; return false;
} }

@ -29,7 +29,8 @@ namespace O3DE::ProjectManager
{ {
NoFilter = -1, NoFilter = -1,
Unselected, Unselected,
Selected Selected,
Both
}; };
enum class GemActive enum class GemActive
{ {

Loading…
Cancel
Save