diff options
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/utilities.cpp b/utilities.cpp index 9e0f7c2..1ddb504 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -67,15 +67,29 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, int HandleNewContact(WPARAM w, LPARAM l) { - IJabberSysInterface *ijsys; - JabberAccount *acc = &Accounts; for(int i = 0; i < GetAccountsCount(); i++) { + JabberAccount *acc = &Accounts; if(!acc) break; - ijsys = acc->JabberInterface->Sys(); + IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); if(_tcsstr(_T(JUICK_JID), ijsys->ContactToJID(HANDLE(w)))) - ; //juick contact found, need to add xmpp traffic handlers for this account. + { + IJabberNetInterface *ijnet = acc->JabberInterface->Net(); + if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) + { + acc->hPrescenseHandler = ijnet->AddPresenceHandler(acc->PrescenseHandler()); + acc->hMessageHandler = ijnet->AddMessageHandler(acc->MessageHandler(), JABBER_MESSAGE_TYPE_ANY, _T(""), _T("")); //hm... + acc->hIqHandler = ijnet->AddIqHandler(acc->IqHandler(), JABBER_IQ_TYPE_ANY, _T(""), _T("")); //hm... + } + } + else 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; } return 0; @@ -83,19 +97,43 @@ int HandleNewContact(WPARAM w, LPARAM l) void FindJuickAccounts() { - IJabberSysInterface *ijsys; - JabberAccount *acc = &Accounts; + for(int i = 0; i < GetAccountsCount(); i++) { + JabberAccount *acc = &Accounts; if(!acc) break; + IJabberSysInterface *ijsys; ijsys = acc->JabberInterface->Sys(); if(ijsys->ContactFromJID(_T(JUICK_JID))) - ; //juick contact found, need to add xmpp traffic handlers for this account. + { + IJabberNetInterface *ijnet = acc->JabberInterface->Net(); + if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) + { + acc->hPrescenseHandler = ijnet->AddPresenceHandler(acc->PrescenseHandler()); + acc->hMessageHandler = ijnet->AddMessageHandler(acc->MessageHandler(), JABBER_MESSAGE_TYPE_ANY, _T(""), _T("")); //hm... + acc->hIqHandler = ijnet->AddIqHandler(acc->IqHandler(), JABBER_IQ_TYPE_ANY, _T(""), _T("")); //hm... + } + } acc = acc->next; } } +JABBER_HANDLER_FUNC JabberAccount::PrescenseHandler() +{ + return FALSE; +} + +JABBER_HANDLER_FUNC JabberAccount::MessageHandler() +{ + return FALSE; +} + +JABBER_HANDLER_FUNC JabberAccount::IqHandler() +{ + return FALSE; +} + BOOL JabberAccount::operator!() { if(!this) |