Allow setting buddies subscriptions

This commit is contained in:
HanzZ 2012-03-08 20:04:56 +01:00
parent f42aa113b9
commit 3949b84ed0
5 changed files with 20 additions and 10 deletions

View file

@ -39,6 +39,9 @@ typedef enum { BUDDY_NO_FLAG = 0,
/// Represents one legacy network Buddy.
class Buddy {
public:
typedef enum { Ask,
Both,
} Subscription;
/// Constructor.
/// \param rosterManager RosterManager associated with this buddy.
@ -93,12 +96,12 @@ class Buddy {
/// Sets current subscription.
/// \param subscription "to", "from", "both", "ask"
void setSubscription(const std::string &subscription);
void setSubscription(Subscription subscription);
/// Returns current subscription
/// \return subscription "to", "from", "both", "ask"
const std::string getSubscription();
Subscription getSubscription();
/// Sets this buddy's flags.
@ -172,6 +175,7 @@ class Buddy {
Swift::JID m_jid;
BuddyFlag m_flags;
RosterManager *m_rosterManager;
Subscription m_subscription;
};
}

View file

@ -26,7 +26,8 @@
namespace Transport {
Buddy::Buddy(RosterManager *rosterManager, long id) : m_id(id), m_flags(BUDDY_NO_FLAG), m_rosterManager(rosterManager){
Buddy::Buddy(RosterManager *rosterManager, long id) : m_id(id), m_flags(BUDDY_NO_FLAG), m_rosterManager(rosterManager),
m_subscription(Ask) {
// m_rosterManager->setBuddy(this);
}
@ -64,12 +65,12 @@ const Swift::JID &Buddy::getJID() {
return m_jid;
}
void Buddy::setSubscription(const std::string &subscription) {
// m_subscription = subscription;
void Buddy::setSubscription(Subscription subscription) {
m_subscription = subscription;
}
const std::string Buddy::getSubscription() {
return "ask";
Buddy::Subscription Buddy::getSubscription() {
return m_subscription;
}
Swift::Presence::ref Buddy::generatePresenceStanza(int features, bool only_new) {

View file

@ -95,7 +95,12 @@ class NetworkFactory : public Factory {
LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id);
buddy->setAlias(buddyInfo.alias);
buddy->setName(buddyInfo.legacyName);
buddy->setSubscription(buddyInfo.subscription);
if (buddyInfo.subscription == "both") {
buddy->setSubscription(Buddy::Both);
}
else {
buddy->setSubscription(Buddy::Ask);
}
buddy->setGroups(buddyInfo.groups);
buddy->setFlags((BuddyFlag) (buddyInfo.flags));
if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end())

View file

@ -103,7 +103,7 @@ bool RosterStorage::storeBuddies() {
buddyInfo.alias = buddy->getAlias();
buddyInfo.legacyName = buddy->getName();
buddyInfo.groups = buddy->getGroups();
buddyInfo.subscription = buddy->getSubscription();
buddyInfo.subscription = buddy->getSubscription() == Buddy::Ask ? "ask" : "both";
buddyInfo.id = buddy->getID();
buddyInfo.flags = buddy->getFlags();
buddyInfo.settings["icon_hash"].s = buddy->getIconHash();

View file

@ -72,7 +72,7 @@ class TestingFactory : public Factory {
LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id);
buddy->setAlias(buddyInfo.alias);
buddy->setName(buddyInfo.legacyName);
buddy->setSubscription(buddyInfo.subscription);
buddy->setSubscription(Buddy::Ask);
buddy->setGroups(buddyInfo.groups);
buddy->setFlags((BuddyFlag) buddyInfo.flags);
if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end())