diff options
Diffstat (limited to 'Swift/Controllers/Roster/Roster.h')
-rw-r--r-- | Swift/Controllers/Roster/Roster.h | 99 |
1 files changed, 54 insertions, 45 deletions
diff --git a/Swift/Controllers/Roster/Roster.h b/Swift/Controllers/Roster/Roster.h index a4c8b99..d22b38d 100644 --- a/Swift/Controllers/Roster/Roster.h +++ b/Swift/Controllers/Roster/Roster.h @@ -1,21 +1,24 @@ /* - * Copyright (c) 2010-2013 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once +#include <map> +#include <memory> +#include <set> #include <string> -#include "Swiften/JID/JID.h" -#include "Swift/Controllers/Roster/RosterItemOperation.h" -#include "Swift/Controllers/Roster/RosterFilter.h" -#include <Swift/Controllers/Roster/ContactRosterItem.h> - #include <vector> -#include <map> -#include "Swiften/Base/boost_bsignals.h" -#include <boost/shared_ptr.hpp> + +#include <boost/signals2.hpp> + +#include <Swiften/JID/JID.h> + +#include <Swift/Controllers/Roster/ContactRosterItem.h> +#include <Swift/Controllers/Roster/ItemOperations/RosterItemOperation.h> +#include <Swift/Controllers/Roster/RosterFilter.h> namespace Swift { @@ -24,42 +27,48 @@ class GroupRosterItem; class ContactRosterItem; class Roster { - public: - Roster(bool sortByStatus = true, bool fullJIDMapping = false); - ~Roster(); + public: + Roster(bool sortByStatus = true, bool fullJIDMapping = false); + ~Roster(); + + void addContact(const JID& jid, const JID& displayJID, const std::string& name, const std::string& group, const boost::filesystem::path& avatarPath); + void removeContact(const JID& jid); + void removeContactFromGroup(const JID& jid, const std::string& group); + void removeGroup(const std::string& group); + void removeAll(); + void applyOnItems(const RosterItemOperation& operation); + void applyOnAllItems(const RosterItemOperation& operation); + void applyOnItem(const RosterItemOperation& operation, const JID& jid); + void addFilter(RosterFilter* filter); + void removeFilter(RosterFilter* filter); + GroupRosterItem* getRoot() const; + std::set<JID> getJIDs() const; + + std::vector<RosterFilter*> getFilters() {return filters_;} + boost::signals2::signal<void (GroupRosterItem*)> onChildrenChanged; + boost::signals2::signal<void (GroupRosterItem*)> onGroupAdded; + boost::signals2::signal<void (RosterItem*)> onDataChanged; + boost::signals2::signal<void (JID&)> onVCardUpdateRequested; + boost::signals2::signal<void (RosterFilter* filter)> onFilterAdded; + boost::signals2::signal<void (RosterFilter* filter)> onFilterRemoved; + GroupRosterItem* getGroup(const std::string& groupName); + void setBlockingSupported(bool isSupported); - void addContact(const JID& jid, const JID& displayJID, const std::string& name, const std::string& group, const boost::filesystem::path& avatarPath); - void removeContact(const JID& jid); - void removeContactFromGroup(const JID& jid, const std::string& group); - void removeGroup(const std::string& group); - void removeAll(); - void applyOnItems(const RosterItemOperation& operation); - void applyOnAllItems(const RosterItemOperation& operation); - void applyOnItem(const RosterItemOperation& operation, const JID& jid); - void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();} - void removeFilter(RosterFilter *filter); - GroupRosterItem* getRoot(); - std::vector<RosterFilter*> getFilters() {return filters_;} - boost::signal<void (GroupRosterItem*)> onChildrenChanged; - boost::signal<void (GroupRosterItem*)> onGroupAdded; - boost::signal<void (RosterItem*)> onDataChanged; - GroupRosterItem* getGroup(const std::string& groupName); - void setAvailableFeatures(const JID& jid, const std::set<ContactRosterItem::Feature>& features); - void setBlockedState(const std::vector<JID>& jids, ContactRosterItem::BlockState state); + private: + void handleDataChanged(RosterItem* item); + void handleChildrenChanged(GroupRosterItem* item); + void filterGroup(GroupRosterItem* item); + void filterContact(ContactRosterItem* contact, GroupRosterItem* group); + void filterAll(); - private: - void handleDataChanged(RosterItem* item); - void handleChildrenChanged(GroupRosterItem* item); - void filterGroup(GroupRosterItem* item); - void filterContact(ContactRosterItem* contact, GroupRosterItem* group); - void filterAll(); - GroupRosterItem* root_; - std::vector<RosterFilter*> filters_; - typedef std::map<JID, std::vector<ContactRosterItem*> > ItemMap; - ItemMap itemMap_; - bool fullJIDMapping_; - bool sortByStatus_; - bool blockingSupported_; + private: + std::vector<RosterFilter*> filters_; + typedef std::map<JID, std::vector<ContactRosterItem*> > ItemMap; + ItemMap itemMap_; + bool fullJIDMapping_; + bool sortByStatus_; + bool blockingSupported_ = false; + const std::unique_ptr<GroupRosterItem> root_; }; } |