Factory::createBuddy
This commit is contained in:
parent
35e56d515d
commit
c04ca92517
2 changed files with 29 additions and 0 deletions
|
@ -27,16 +27,22 @@
|
|||
#include "Swiften/Swiften.h"
|
||||
#include "Swiften/Elements/Message.h"
|
||||
#include "transport/conversation.h"
|
||||
#include "transport/buddy.h"
|
||||
#include "transport/storagebackend.h"
|
||||
|
||||
namespace Transport {
|
||||
|
||||
class Conversation;
|
||||
class Buddy;
|
||||
class ConversationManager;
|
||||
class RosterManager;
|
||||
|
||||
class Factory {
|
||||
public:
|
||||
|
||||
virtual Conversation *createConversation(ConversationManager *conversationManager, const std::string &legacyName) = 0;
|
||||
|
||||
virtual Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -460,6 +460,29 @@ class SpectrumFactory : public Factory {
|
|||
PurpleConversation *conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, (PurpleAccount *) conversationManager->getUser()->getData() , legacyName.c_str());
|
||||
return (Conversation *) conv->ui_data;
|
||||
}
|
||||
|
||||
Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) {
|
||||
PurpleAccount *account = (PurpleAccount *) rosterManager->getUser()->getData();
|
||||
std::string group = buddyInfo.groups[0];
|
||||
PurpleGroup *g = purple_find_group(group.c_str());
|
||||
if (!g) {
|
||||
g = purple_group_new(group.c_str());
|
||||
purple_blist_add_group(g, NULL);
|
||||
}
|
||||
|
||||
PurpleBuddy *buddy = purple_find_buddy_in_group(account, buddyInfo.legacyName.c_str(), g);
|
||||
if (!buddy) {
|
||||
// create contact
|
||||
PurpleContact *contact = purple_contact_new();
|
||||
purple_blist_add_contact(contact, g, NULL);
|
||||
|
||||
// create buddy
|
||||
buddy = purple_buddy_new(account, buddyInfo.legacyName.c_str(), buddyInfo.alias.c_str());
|
||||
purple_blist_add_buddy(buddy, contact, g, NULL);
|
||||
purple_blist_server_alias_buddy(buddy, buddyInfo.alias.c_str());
|
||||
}
|
||||
return (Buddy *) buddy->node.ui_data;
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
|
Loading…
Add table
Reference in a new issue