#pragma once #include "ui_VariationsDialog.h" #include "FractoriumSettings.h" /// /// FractoriumVariationsDialog class. /// /// /// The variations filter dialog displays several columns /// with the different types of variations shown as checkboxes. /// This is used to filter the variations that are shown in the main window /// because the list is very long. /// The results are stored in a map and returned. /// These are used in conjunction with the filter edit box to filter what's shown. /// class FractoriumVariationsDialog : public QDialog { Q_OBJECT public: FractoriumVariationsDialog(FractoriumSettings* settings, QWidget* p = nullptr, Qt::WindowFlags f = nullptr); void ForEachCell(std::function func); void ForEachSelectedCell(std::function func); void SyncSettings(); const QMap& Map(); public slots: void OnSelectAllButtonClicked(bool checked); void OnInvertSelectionButtonClicked(bool checked); void OnSelectNoneButtonClicked(bool checked); void OnVariationsTableItemChanged(QTableWidgetItem* item); virtual void accept() override; virtual void reject() override; protected: virtual void showEvent(QShowEvent* e) override; private: void DataToGui(); void GuiToData(); void Populate(); void SetCheckFromMap(QTableWidgetItem* cb, const Variation* var); VariationList& m_VariationList; QMap m_Vars; FractoriumSettings* m_Settings; Ui::VariationsDialog ui; };