From fecf5df530e8da455c2417a5023cce5daae1292c Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Tue, 15 Jun 2010 14:39:18 +0300 Subject: fixed add\delete contacts handling modified: init.cpp modified: utilities.cpp --- utilities.cpp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'utilities.cpp') diff --git a/utilities.cpp b/utilities.cpp index b50af4a..776bcab 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -65,7 +65,7 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, return 0; } -int HandleNewContact(WPARAM w, LPARAM l) +int HandleDbNewContact(WPARAM w, LPARAM l) { for(int i = 0; i < GetAccountsCount(); i++) { @@ -78,21 +78,40 @@ int HandleNewContact(WPARAM w, LPARAM l) { if(_tcsstr(_T(JUICK_JID), tmp)) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) { + IJabberNetInterface *ijnet = acc->JabberInterface->Net(); acc->hPrescenseHandler = ijnet->AddPresenceHandler(acc->PrescenseHandler(acc->JabberInterface, acc->pNODE, acc->ppUserData)); acc->hMessageHandler = ijnet->AddMessageHandler(acc->MessageHandler(acc->JabberInterface, acc->mNODE, acc->mpUserData), JABBER_MESSAGE_TYPE_ANY, 0, 0); //hm... acc->hIqHandler = ijnet->AddIqHandler(acc->IqHandler(acc->JabberInterface, acc->iNODE, acc->ipUserData), JABBER_IQ_TYPE_ANY, 0, 0); //hm... } } } - else if (acc->hPrescenseHandler && acc->hMessageHandler && acc->hIqHandler) + acc = acc->next; + } + return 0; +} +int HandleDbContactDeleted(WPARAM w, LPARAM l) +{ + for(int i = 0; i < GetAccountsCount(); i++) + { + JabberAccount *acc = &Accounts; + if(!acc) + break; + IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); + LPTSTR tmp = ijsys->ContactToJID(HANDLE(w)); + if(tmp) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); - ijnet->RemoveHandler(acc->hPrescenseHandler); - ijnet->RemoveHandler(acc->hMessageHandler); - ijnet->RemoveHandler(acc->hIqHandler); + if(_tcsstr(_T(JUICK_JID), tmp)) + { + if(acc->hPrescenseHandler && acc->hMessageHandler && acc->hIqHandler) + { + IJabberNetInterface *ijnet = acc->JabberInterface->Net(); + ijnet->RemoveHandler(acc->hPrescenseHandler); + ijnet->RemoveHandler(acc->hMessageHandler); + ijnet->RemoveHandler(acc->hIqHandler); + } + } } acc = acc->next; } -- cgit v1.2.3