/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include #include #include #include "Swiften/MUC/MUCBookmark.h" #include "Swiften/Elements/Storage.h" #include "Swiften/Elements/ErrorPayload.h" namespace Swift { class IQRouter; class MUCBookmarkManager { public: MUCBookmarkManager(IQRouter* iqRouter); void addBookmark(const MUCBookmark& bookmark); void removeBookmark(const MUCBookmark& bookmark); void replaceBookmark(const MUCBookmark& oldBookmark, const MUCBookmark& newBookmark); const std::vector& getBookmarks() const; public: boost::signal onBookmarkAdded; boost::signal onBookmarkRemoved; private: bool containsEquivalent(const std::vector& list, const MUCBookmark& bookmark); void handleBookmarksReceived(boost::shared_ptr payload, const boost::optional& error); void flush(); private: std::vector bookmarks_; IQRouter* iqRouter_; boost::shared_ptr storage; }; }