#ifndef MODORGANIZER_CATEGORIESLIST_INCLUDED #define MODORGANIZER_CATEGORIESLIST_INCLUDED #include "modlistsortproxy.h" #include namespace Ui { class MainWindow; }; class CategoryFactory; class Settings; class OrganizerCore; class FilterList : public QObject { Q_OBJECT; public: FilterList(Ui::MainWindow* ui, OrganizerCore *organizer, CategoryFactory& factory); void restoreState(const Settings& s); void saveState(Settings& s) const; void setSelection(const std::vector& criteria); void clearSelection(); void refresh(); signals: void criteriaChanged(std::vector criteria); void optionsChanged( ModListSortProxy::FilterMode mode, ModListSortProxy::SeparatorsMode sep); private: class CriteriaItem; Ui::MainWindow* ui; OrganizerCore* m_Organizer; CategoryFactory& m_factory; bool onClick(QMouseEvent* e); void onItemActivated(QTreeWidgetItem* item); void onOptionsChanged(); void editCategories(); void checkCriteria(); std::vector selectedCriteria() const; bool cycleItem(QTreeWidgetItem* item, int direction); QTreeWidgetItem* addCriteriaItem( QTreeWidgetItem *root, const QString &name, int categoryID, ModListSortProxy::CriteriaType type); void addContentCriteria(); void addCategoryCriteria( QTreeWidgetItem *root, const std::set &categoriesUsed, int targetID); void addSpecialCriteria(int type); }; #endif // MODORGANIZER_CATEGORIESLIST_INCLUDED