#ifndef SWIFTEN_Roster_H #define SWIFTEN_Roster_H #include "Swiften/Base/String.h" #include "Swiften/JID/JID.h" #include "Swiften/Roster/RosterItemOperation.h" #include "Swiften/Roster/UserRosterAction.h" #include "Swiften/Roster/RosterFilter.h" #include #include #include namespace Swift { class TreeWidgetFactory; class TreeWidget; class RosterItem; class GroupRosterItem; class Roster { public: Roster(TreeWidget *treeWidget, TreeWidgetFactory *widgetFactory); ~Roster(); TreeWidget* getWidget(); GroupRosterItem* getGroup(const String& groupName); void addContact(const JID& jid, const String& name, const String& group); void removeContact(const JID& jid); void applyOnItems(const RosterItemOperation& operation); boost::signal)> onUserAction; void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();} void removeFilter(RosterFilter *filter); std::vector getFilters() {return filters_;} private: void filterItem(RosterItem* item); void filterAll(); void handleUserAction(boost::shared_ptr action); TreeWidget *treeWidget_; TreeWidgetFactory *widgetFactory_; std::vector children_; std::vector items_; std::vector filters_; }; } #endif