/* * Copyright (c) 2013 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include namespace Swift { class BlockPayload; class UnblockPayload; class ClientBlockListManager; class EventController; class BlockListController { public: BlockListController(ClientBlockListManager* blockListManager, UIEventStream* uiEventStream, BlockListEditorWidgetFactory* blockListEditorWidgetFactory, EventController* eventController); ~BlockListController(); private: void blockListDifferences(const std::vector &newBlockList, std::vector& jidsToUnblock, std::vector& jidsToBlock) const; void handleUIEvent(boost::shared_ptr event); void handleBlockResponse(GenericRequest::ref, boost::shared_ptr, ErrorPayload::ref error, const std::vector& jids, bool originEditor); void handleUnblockResponse(GenericRequest::ref, boost::shared_ptr, ErrorPayload::ref error, const std::vector& jids, bool originEditor); void handleSetNewBlockList(const std::vector& newBlockList); void handleBlockListChanged(); private: ClientBlockListManager* blockListManager_; BlockListEditorWidgetFactory* blockListEditorWidgetFactory_; BlockListEditorWidget* blockListEditorWidget_; EventController* eventController_; std::vector blockListBeforeEdit; int remainingRequests_; }; }