summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/VCards/VCardManager.h')
-rw-r--r--Swiften/VCards/VCardManager.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/Swiften/VCards/VCardManager.h b/Swiften/VCards/VCardManager.h
index e1ed44a..5cdf82e 100644
--- a/Swiften/VCards/VCardManager.h
+++ b/Swiften/VCards/VCardManager.h
@@ -6,35 +6,48 @@
#pragma once
-#include <boost/signals.hpp>
#include <set>
#include "Swiften/JID/JID.h"
#include "Swiften/Elements/VCard.h"
#include "Swiften/Elements/ErrorPayload.h"
+#include <Swiften/VCards/SetVCardRequest.h>
+#include <Swiften/Base/boost_bsignals.h>
namespace Swift {
class JID;
class VCardStorage;
class IQRouter;
- class VCardManager {
+ class VCardManager : public boost::bsignals::trackable {
public:
VCardManager(const JID& ownJID, IQRouter* iqRouter, VCardStorage* vcardStorage);
+ ~VCardManager();
VCard::ref getVCard(const JID& jid) const;
VCard::ref getVCardAndRequestWhenNeeded(const JID& jid);
void requestVCard(const JID& jid);
void requestOwnVCard();
+ SetVCardRequest::ref createSetVCardRequest(VCard::ref);
+
public:
/**
* The JID will always be bare.
*/
boost::signal<void (const JID&, VCard::ref)> onVCardChanged;
+ /**
+ * Emitted when our own vcard changes.
+ *
+ * onVCardChanged will also be emitted.
+ */
+ boost::signal<void (VCard::ref)> onOwnVCardChanged;
+
private:
void handleVCardReceived(const JID& from, VCard::ref, ErrorPayload::ref);
+ void handleSetVCardResponse(VCard::ref, ErrorPayload::ref);
+ void setVCard(const JID& jid, VCard::ref vcard);
private:
JID ownJID;