summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp33
1 files changed, 26 insertions, 7 deletions
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;
}