Allow setting buddies subscriptions
This commit is contained in:
parent
f42aa113b9
commit
3949b84ed0
5 changed files with 20 additions and 10 deletions
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Add table
Reference in a new issue