diff options
Diffstat (limited to 'Swift/Controllers/Roster/RosterController.h')
-rw-r--r-- | Swift/Controllers/Roster/RosterController.h | 207 |
1 files changed, 111 insertions, 96 deletions
diff --git a/Swift/Controllers/Roster/RosterController.h b/Swift/Controllers/Roster/RosterController.h index 06b551e..d5a5671 100644 --- a/Swift/Controllers/Roster/RosterController.h +++ b/Swift/Controllers/Roster/RosterController.h @@ -1,113 +1,128 @@ /* - * Copyright (c) 2010 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2018 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once -#include "Swiften/JID/JID.h" -#include <string> +#include <memory> #include <set> -#include "Swiften/Elements/Presence.h" -#include "Swiften/Elements/ErrorPayload.h" -#include "Swiften/Elements/RosterPayload.h" -#include "Swiften/Avatars/AvatarManager.h" -#include "Swift/Controllers/UIEvents/UIEvent.h" -#include "RosterGroupExpandinessPersister.h" -#include "Swift/Controllers/FileTransfer/FileTransferOverview.h" +#include <string> + +#include <boost/signals2.hpp> -#include "Swiften/Base/boost_bsignals.h" -#include <boost/shared_ptr.hpp> +#include <Swiften/Avatars/AvatarManager.h> +#include <Swiften/Elements/ErrorPayload.h> +#include <Swiften/Elements/Presence.h> +#include <Swiften/Elements/RosterPayload.h> +#include <Swiften/Elements/VCard.h> +#include <Swiften/JID/JID.h> + +#include <Swift/Controllers/Roster/ContactRosterItem.h> +#include <Swift/Controllers/UIEvents/UIEvent.h> namespace Swift { - class IQRouter; - class Roster; - class XMPPRoster; - class XMPPRosterItem; - class MainWindow; - class MainWindowFactory; - class OfflineRosterFilter; - class NickResolver; - class PresenceOracle; - class SubscriptionManager; - class EventController; - class SubscriptionRequestEvent; - class UIEventStream; - class IQRouter; - class SettingsProvider; - class NickManager; - class EntityCapsProvider; - class FileTransferManager; - class ClientBlockListManager; + class AvatarManager; + class Chattables; + class ClientBlockListManager; + class EntityCapsProvider; + class EventController; + class FeatureOracle; + class FileTransferManager; + class IQRouter; + class MainWindow; + class MainWindowFactory; + class NickManager; + class NickResolver; + class OfflineRosterFilter; + class PresenceOracle; + class Roster; + class RosterGroupExpandinessPersister; + class RosterVCardProvider; + class SettingsProvider; + class SubscriptionManager; + class SubscriptionRequestEvent; + class UIEventStream; + class VCardManager; + class XMPPRoster; + class XMPPRosterItem; + + class RosterController { + public: + RosterController(const JID& jid, XMPPRoster* xmppRoster, AvatarManager* avatarManager, MainWindowFactory* mainWindowFactory, NickManager* nickManager, NickResolver* nickResolver, PresenceOracle* presenceOracle, SubscriptionManager* subscriptionManager, EventController* eventController, UIEventStream* uiEventStream, IQRouter* iqRouter, SettingsProvider* settings, EntityCapsProvider* entityCapsProvider, ClientBlockListManager* clientBlockListManager, VCardManager* vcardManager, Chattables& chattables); + ~RosterController(); + void showRosterWindow(); + void setJID(const JID& jid) { myJID_ = jid; } + MainWindow* getWindow() {return mainWindow_;} + boost::signals2::signal<void (StatusShow::Type, const std::string&)> onChangeStatusRequest; + boost::signals2::signal<void ()> onSignOutRequest; + void handleOwnVCardChanged(VCard::ref vcard); + void handleAvatarChanged(const JID& jid); + void handlePresenceChanged(Presence::ref presence); + void setEnabled(bool enabled); - class RosterController { - public: - RosterController(const JID& jid, XMPPRoster* xmppRoster, AvatarManager* avatarManager, MainWindowFactory* mainWindowFactory, NickManager* nickManager, NickResolver* nickResolver, PresenceOracle* presenceOracle, SubscriptionManager* subscriptionManager, EventController* eventController, UIEventStream* uiEventStream, IQRouter* iqRouter_, SettingsProvider* settings, EntityCapsProvider* entityCapsProvider, FileTransferOverview* fileTransferOverview, ClientBlockListManager* clientBlockListManager); - ~RosterController(); - void showRosterWindow(); - MainWindow* getWindow() {return mainWindow_;} - boost::signal<void (StatusShow::Type, const std::string&)> onChangeStatusRequest; - boost::signal<void ()> onSignOutRequest; - void handleAvatarChanged(const JID& jid); - void setEnabled(bool enabled); + boost::optional<XMPPRosterItem> getItem(const JID&) const; + std::set<std::string> getGroups() const; - boost::optional<XMPPRosterItem> getItem(const JID&) const; - std::set<std::string> getGroups() const; + void setContactGroups(const JID& jid, const std::vector<std::string>& groups); + void updateItem(const XMPPRosterItem&); - void setContactGroups(const JID& jid, const std::vector<std::string>& groups); - void updateItem(const XMPPRosterItem&); + void initBlockingCommand(); - void initBlockingCommand(); + private: + void handleOnJIDAdded(const JID &jid); + void handleRosterCleared(); + void handleOnJIDRemoved(const JID &jid); + void handleOnJIDUpdated(const JID &jid, const std::string& oldName, const std::vector<std::string>& oldGroups); + void handleStartChatRequest(const JID& contact); + void handleChangeStatusRequest(StatusShow::Type show, const std::string &statusText); + void handleShowOfflineToggled(bool state); + void handleIncomingPresence(std::shared_ptr<Presence> newPresence); + void handleSubscriptionRequest(const JID& jid, const std::string& message); + void handleSubscriptionRequestAccepted(SubscriptionRequestEvent* event); + void handleSubscriptionRequestDeclined(SubscriptionRequestEvent* event); + void handleUIEvent(std::shared_ptr<UIEvent> event); + void handleRosterItemUpdated(ErrorPayload::ref error, std::shared_ptr<RosterPayload> rosterPayload); + void handleRosterSetError(ErrorPayload::ref error, std::shared_ptr<RosterPayload> rosterPayload); + void applyAllPresenceTo(const JID& jid); + void handleEditProfileRequest(); + void handleOnCapsChanged(const JID& jid); + void handleSettingChanged(const std::string& settingPath); - private: - void handleOnJIDAdded(const JID &jid); - void handleRosterCleared(); - void handleOnJIDRemoved(const JID &jid); - void handleOnJIDUpdated(const JID &jid, const std::string& oldName, const std::vector<std::string>& oldGroups); - void handleStartChatRequest(const JID& contact); - void handleChangeStatusRequest(StatusShow::Type show, const std::string &statusText); - void handleShowOfflineToggled(bool state); - void handleIncomingPresence(boost::shared_ptr<Presence> newPresence); - void handleSubscriptionRequest(const JID& jid, const std::string& message); - void handleSubscriptionRequestAccepted(SubscriptionRequestEvent* event); - void handleSubscriptionRequestDeclined(SubscriptionRequestEvent* event); - void handleUIEvent(boost::shared_ptr<UIEvent> event); - void handleRosterSetError(ErrorPayload::ref error, boost::shared_ptr<RosterPayload> rosterPayload); - void applyAllPresenceTo(const JID& jid); - void handleEditProfileRequest(); - void handleOnCapsChanged(const JID& jid); - void handleSettingChanged(const std::string& settingPath); + void handleBlockingStateChanged(); + void handleBlockingItemAdded(const JID& jid); + void handleBlockingItemRemoved(const JID& jid); - void handleBlockingStateChanged(); - void handleBlockingItemAdded(const JID& jid); - void handleBlockingItemRemoved(const JID& jid); + JID myJID_; + XMPPRoster* xmppRoster_; + MainWindowFactory* mainWindowFactory_; + MainWindow* mainWindow_; + Roster* roster_; + OfflineRosterFilter* offlineFilter_; + VCardManager* vcardManager_; + AvatarManager* avatarManager_; + NickManager* nickManager_; + NickResolver* nickResolver_; + PresenceOracle* presenceOracle_; + SubscriptionManager* subscriptionManager_; + EventController* eventController_; + RosterGroupExpandinessPersister* expandiness_; + IQRouter* iqRouter_; + SettingsProvider* settings_; + UIEventStream* uiEventStream_; + EntityCapsProvider* entityCapsManager_; + ClientBlockListManager* clientBlockListManager_; + Chattables& chattables_; + RosterVCardProvider* rosterVCardProvider_; + std::shared_ptr<ContactRosterItem> ownContact_; + std::unique_ptr<FeatureOracle> featureOracle_; - JID myJID_; - XMPPRoster* xmppRoster_; - MainWindowFactory* mainWindowFactory_; - MainWindow* mainWindow_; - Roster* roster_; - OfflineRosterFilter* offlineFilter_; - AvatarManager* avatarManager_; - NickManager* nickManager_; - NickResolver* nickResolver_; - PresenceOracle* presenceOracle_; - SubscriptionManager* subscriptionManager_; - EventController* eventController_; - RosterGroupExpandinessPersister* expandiness_; - IQRouter* iqRouter_; - SettingsProvider* settings_; - UIEventStream* uiEventStream_; - EntityCapsProvider* entityCapsManager_; - FileTransferOverview* ftOverview_; - ClientBlockListManager* clientBlockListManager_; - - boost::bsignals::scoped_connection blockingOnStateChangedConnection_; - boost::bsignals::scoped_connection blockingOnItemAddedConnection_; - boost::bsignals::scoped_connection blockingOnItemRemovedConnection_; - boost::bsignals::scoped_connection changeStatusConnection_; - boost::bsignals::scoped_connection signOutConnection_; - boost::bsignals::scoped_connection uiEventConnection_; - }; + boost::signals2::scoped_connection blockingOnStateChangedConnection_; + boost::signals2::scoped_connection blockingOnItemAddedConnection_; + boost::signals2::scoped_connection blockingOnItemRemovedConnection_; + boost::signals2::scoped_connection changeStatusConnection_; + boost::signals2::scoped_connection signOutConnection_; + boost::signals2::scoped_connection uiEventConnection_; + }; } |