From 5c45ec449d714947a326be162ac5250c173f6582 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Thu, 23 Jul 2026 18:18:02 +0200 Subject: [PATCH] fix multi-group categories, fix qt5 builds --- forms/wildmonchart.ui | 81 +++++++++++++++++++++++++++-------- include/ui/specieschartview.h | 5 ++- include/ui/wildmonchart.h | 4 +- src/ui/specieschartview.cpp | 6 ++- src/ui/wildmonchart.cpp | 28 +++++++++--- 5 files changed, 97 insertions(+), 27 deletions(-) diff --git a/forms/wildmonchart.ui b/forms/wildmonchart.ui index c4a4a8e5..cfba0409 100644 --- a/forms/wildmonchart.ui +++ b/forms/wildmonchart.ui @@ -17,10 +17,10 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame - QFrame::Plain + QFrame::Shadow::Plain @@ -48,7 +48,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -85,6 +85,9 @@ 0 + + 0 + 0 @@ -92,12 +95,56 @@ 0 - - - QPainter::Antialiasing + + + QFrame::Shape::NoFrame + + QFrame::Shadow::Plain + + + + 12 + + + 0 + + + + + Group + + + + + + + QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon + + + 8 + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + @@ -120,10 +167,10 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame - QFrame::Plain + QFrame::Shadow::Plain @@ -142,7 +189,7 @@ - QComboBox::AdjustToMinimumContentsLengthWithIcon + QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon 8 @@ -152,7 +199,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -199,10 +246,10 @@ true - QComboBox::NoInsert + QComboBox::InsertPolicy::NoInsert - QComboBox::AdjustToMinimumContentsLengthWithIcon + QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon 12 @@ -229,16 +276,16 @@ - - SpeciesChartView - QChartView -
specieschartview.h
-
NoScrollComboBox QComboBox
noscrollwidgets.h
+ + SpeciesChartView + QWidget +
specieschartview.h
+
diff --git a/include/ui/specieschartview.h b/include/ui/specieschartview.h index cfb66be8..0c01affd 100644 --- a/include/ui/specieschartview.h +++ b/include/ui/specieschartview.h @@ -1,6 +1,7 @@ #ifndef SPECIESCHARTVIEW_H #define SPECIESCHARTVIEW_H +#if __has_include() #include class Project; @@ -34,4 +35,6 @@ private: int m_maxTextWidth = 0; }; -#endif +#endif // __has_include() + +#endif // SPECIESCHARTVIEW_H diff --git a/include/ui/wildmonchart.h b/include/ui/wildmonchart.h index 0b0d6f9a..b2153b6e 100644 --- a/include/ui/wildmonchart.h +++ b/include/ui/wildmonchart.h @@ -77,11 +77,13 @@ private: #else +class Project; + class WildMonChart : public QWidget { Q_OBJECT public: - explicit WildMonChart(QWidget *, const EncounterTableModel *) {}; + explicit WildMonChart(QWidget *, const EncounterTableModel *, Project *) {}; ~WildMonChart() {}; public slots: diff --git a/src/ui/specieschartview.cpp b/src/ui/specieschartview.cpp index 68a35eb6..263d0909 100644 --- a/src/ui/specieschartview.cpp +++ b/src/ui/specieschartview.cpp @@ -1,7 +1,7 @@ +#ifdef QT_CHARTS_LIB + #include "specieschartview.h" - #include "project.h" - #include SpeciesChartView::SpeciesChartView(QWidget *parent) @@ -98,3 +98,5 @@ void SpeciesChartView::paintEvent(QPaintEvent *event) painter.drawPixmap(iconRect, entry.icon); } } + +#endif // QT_CHARTS_LIB diff --git a/src/ui/wildmonchart.cpp b/src/ui/wildmonchart.cpp index ecdff29f..37bcf306 100644 --- a/src/ui/wildmonchart.cpp +++ b/src/ui/wildmonchart.cpp @@ -35,6 +35,7 @@ WildMonChart::WildMonChart(QWidget *parent, const EncounterTableModel *table, Pr connect(ui->groupBox_Species, &QGroupBox::clicked, this, &WildMonChart::refreshLevelDistributionChart); connect(ui->comboBox_Species, &QComboBox::currentTextChanged, this, &WildMonChart::refreshLevelDistributionChart); connect(ui->comboBox_Group, &QComboBox::currentTextChanged, this, &WildMonChart::refreshLevelDistributionChart); + connect(ui->comboBox_speciesDistributionGroup, &QComboBox::currentTextChanged, this, &WildMonChart::refreshSpeciesDistributionChart); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &WildMonChart::limitChartAnimation); @@ -82,10 +83,14 @@ void WildMonChart::clearTableData() { const QSignalBlocker blocker1(ui->comboBox_Species); const QSignalBlocker blocker2(ui->comboBox_Group); + const QSignalBlocker blocker3(ui->comboBox_speciesDistributionGroup); ui->comboBox_Species->clear(); ui->comboBox_Group->clear(); ui->comboBox_Group->setEnabled(false); + ui->comboBox_speciesDistributionGroup->clear(); + ui->comboBox_speciesDistributionGroup->setEnabled(false); ui->label_Group->setEnabled(false); + ui->label_speciesDistributionGroup->setEnabled(false); } // Extract all the data from the table that we need for the charts @@ -150,20 +155,27 @@ void WildMonChart::readTable() { // Populate combo boxes const QSignalBlocker blocker1(ui->comboBox_Species); const QSignalBlocker blocker2(ui->comboBox_Group); + const QSignalBlocker blocker3(ui->comboBox_speciesDistributionGroup); ui->comboBox_Species->clear(); ui->comboBox_Species->addItems(getSpeciesNamesAlphabetical()); ui->comboBox_Group->clear(); ui->comboBox_Group->addItems(this->groupNames); + ui->comboBox_speciesDistributionGroup->clear(); + ui->comboBox_speciesDistributionGroup->addItems(this->groupNames); bool enableGroupSelection = usesGroupLabels(); ui->comboBox_Group->setEnabled(enableGroupSelection); + ui->comboBox_speciesDistributionGroup->setEnabled(enableGroupSelection); ui->label_Group->setEnabled(enableGroupSelection); + ui->label_speciesDistributionGroup->setEnabled(enableGroupSelection); } void WildMonChart::refresh() { const QSignalBlocker blocker1(ui->comboBox_Species); const QSignalBlocker blocker2(ui->comboBox_Group); + const QSignalBlocker blocker3(ui->comboBox_speciesDistributionGroup); const QString oldSpecies = ui->comboBox_Species->currentText(); const QString oldGroup = ui->comboBox_Group->currentText(); + const QString oldSpeciesGroup = ui->comboBox_speciesDistributionGroup->currentText(); readTable(); @@ -174,6 +186,9 @@ void WildMonChart::refresh() { index = ui->comboBox_Group->findText(oldGroup); if (index >= 0) ui->comboBox_Group->setCurrentIndex(index); + index = ui->comboBox_speciesDistributionGroup->findText(oldSpeciesGroup); + if (index >= 0) ui->comboBox_speciesDistributionGroup->setCurrentIndex(index); + refreshSpeciesDistributionChart(); refreshLevelDistributionChart(); } @@ -235,14 +250,13 @@ struct SpeciesFrequency }; QChart* WildMonChart::createSpeciesDistributionChart() { + const QString groupName = ui->comboBox_speciesDistributionGroup->currentText(); QList barSets; QStringList categories; QList speciesList; for (const auto &species : getSpeciesNamesAlphabetical()) { - for (auto groupName : this->groupNamesReversed) { - speciesList.append({species, getSpeciesFrequency(species, groupName) * 100.0}); - } + speciesList.append({species, getSpeciesFrequency(species, groupName) * 100.0}); } std::sort(speciesList.begin(), speciesList.end(), [](const auto &a, const auto &b) { @@ -251,8 +265,10 @@ QChart* WildMonChart::createSpeciesDistributionChart() { auto *set = new QBarSet("Encounter Rates"); for (const auto &entry : speciesList) { - set->append(entry.frequency); - categories.append(entry.name); + if (entry.frequency > 0.0) { + set->append(entry.frequency); + categories.append(entry.name); + } } barSets.append(set); @@ -359,7 +375,7 @@ QChart* WildMonChart::createLevelDistributionChart() { levelRange = getLevelRange(species, groupName); } else { // Species box is inactive, we display data for all species in the table. - for (const auto &species : this->speciesInLegendOrder) + for (const auto &species : getSpeciesNamesAlphabetical()) barSets.append(createLevelDistributionBarSet(species, groupName, false)); levelRange = this->groupedLevelRanges.value(groupName); }