/* * Copyright (c) 2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include namespace Swift { class Chattables { public: struct State { enum class Type {Room, Person}; JID jid; /// Empty for no name std::string name; int unreadCount = 0; Type type; StatusShow::Type status = StatusShow::None; //avatar //status }; const std::vector& get() const; const State& getState(const JID& jid) const; void addJID(const JID& jid, State::Type type); void setState(const JID& jid, State state); boost::signals2::signal onAdded; boost::signals2::signal onRemoved; boost::signals2::signal onChanged; /// The UI has activated a chattable item (e.g. clicked in the roster) boost::signals2::signal onActivated; private: std::vector list_; std::map states_; State unknown_; }; }