summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp117
1 files changed, 44 insertions, 73 deletions
diff --git a/utilities.cpp b/utilities.cpp
index c6be654..c21a919 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -30,51 +30,35 @@ TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,c
return szRes;
}
-extern JabberAccount Accounts;
-
-int GetAccountsCount();
+extern list <JabberAccount*> Accounts;
int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, options later
{
- IJabberInterface *JIftmp[50]; //should it be dynamic ?
int count = 0;
PROTOACCOUNT **accounts;
- JabberAccount *acc = &Accounts;
- if(!acc)
- acc = new(JabberAccount);
ProtoEnumAccounts(&count, &accounts);
- acc->AccountNumber = 0;
- int i;
- for(i = 0; i < count; i++) //get only jabber accounts from all accounts
+ list <JabberAccount*>::iterator p;
+ Accounts.push_back(new JabberAccount);
+ p = Accounts.begin();
+ (*p)->AccountNumber = 0;
+ for(int i = 0; i < count; i++) //get only jabber accounts from all accounts
{
char *tmp = mir_u2a(accounts[i]->tszAccountName);
- JIftmp[i] = getJabberApi(tmp);
- if(!acc)
- acc = new(JabberAccount);
- if(JIftmp[i])
+ IJabberInterface *JIftmp = getJabberApi(tmp);
+ int a = 0;
+ if(JIftmp)
{
- acc->JabberInterface = JIftmp[i];
- acc->AccountName = accounts[i]->tszAccountName;
- acc->AccountNumber = i;
- acc = acc->next;
- acc = new(JabberAccount);
+ (*p)->JabberInterface = JIftmp;
+ (*p)->AccountName = accounts[i]->tszAccountName;
+ (*p)->AccountNumber = a;
+ (*p)->hIqHandler = (*p)->hMessageHandler = (*p)->hPrescenseHandler = INVALID_HANDLE_VALUE;
+ a++;
+ p++;
+ Accounts.push_back(new JabberAccount);
}
mir_free(tmp);
}
- if(GetAccountsCount() > i) //cleanup unused accounts
- {
- JabberAccount *acc = &Accounts, *acc2;
- for(int a = 0; a <= i; a++)
- acc=acc->next;
- while(acc)
- {
- acc2 = acc;
- acc = acc->next;
- delete acc2;
- }
- }
- if(!GetAccountsCount())
- return 1; //no jabber accounts found
+ Accounts.pop_back();
return 0;
}
@@ -84,77 +68,73 @@ static JABBER_HANDLER_FUNC IqHandler(IJabberInterface *ji, HXML node, void *pUse
int HandleDbNewContact(WPARAM w, LPARAM l)
{
- for(int i = 0; i < GetAccountsCount(); i++)
+ list <JabberAccount*>::iterator p = Accounts.begin();
+ for(unsigned int i = 0; i < Accounts.size(); i++, p++)
{
- JabberAccount *acc = &Accounts;
- if(!acc)
+ if(!(*p))
break;
- IJabberSysInterface *ijsys = acc->JabberInterface->Sys();
+ IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
LPTSTR tmp = ijsys->ContactToJID(HANDLE(w));
if(tmp)
{
if(_tcsstr(_T(JUICK_JID), tmp))
{
- if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler)
+ if(!(*p)->hPrescenseHandler && !(*p)->hMessageHandler && !(*p)->hIqHandler)
{
- IJabberNetInterface *ijnet = acc->JabberInterface->Net();
- acc->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler);
- acc->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0);
- acc->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0);
+ IJabberNetInterface *ijnet = (*p)->JabberInterface->Net();
+ (*p)->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler);
+ (*p)->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0);
+ (*p)->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0);
}
}
}
- acc = acc->next;
}
return 0;
}
int HandleDbContactDeleted(WPARAM w, LPARAM l)
{
- for(int i = 0; i < GetAccountsCount(); i++)
+ list <JabberAccount*>::iterator p = Accounts.begin();
+ for(unsigned int i = 0; i < Accounts.size(); i++, p++)
{
- JabberAccount *acc = &Accounts;
- if(!acc)
+ if(!(*p))
break;
- IJabberSysInterface *ijsys = acc->JabberInterface->Sys();
+ IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
LPTSTR tmp = ijsys->ContactToJID(HANDLE(w));
if(tmp)
{
if(_tcsstr(_T(JUICK_JID), tmp))
{
- if(acc->hPrescenseHandler && acc->hMessageHandler && acc->hIqHandler)
+ if((*p)->hPrescenseHandler && (*p)->hMessageHandler && (*p)->hIqHandler)
{
- IJabberNetInterface *ijnet = acc->JabberInterface->Net();
- ijnet->RemoveHandler(acc->hPrescenseHandler);
- ijnet->RemoveHandler(acc->hMessageHandler);
- ijnet->RemoveHandler(acc->hIqHandler);
+ IJabberNetInterface *ijnet = (*p)->JabberInterface->Net();
+ ijnet->RemoveHandler((*p)->hPrescenseHandler);
+ ijnet->RemoveHandler((*p)->hMessageHandler);
+ ijnet->RemoveHandler((*p)->hIqHandler);
}
}
}
- acc = acc->next;
}
return 0;
}
void FindJuickAccounts()
{
-
- for(int i = 0; i < GetAccountsCount(); i++)
+ list <JabberAccount*>::iterator p = Accounts.begin();
+ for(unsigned int i = 0; i < Accounts.size(); i++, p++)
{
- JabberAccount *acc = &Accounts;
- if(!acc)
+ if(!(*p))
break;
- IJabberSysInterface *ijsys = acc->JabberInterface->Sys();
+ IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
if(ijsys->ContactFromJID(_T(JUICK_JID))) //i should use this contact handler
{
- if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler)
+ if((*p)->hPrescenseHandler == INVALID_HANDLE_VALUE && (*p)->hMessageHandler == INVALID_HANDLE_VALUE && (*p)->hIqHandler == INVALID_HANDLE_VALUE)
{
- IJabberNetInterface *ijnet = acc->JabberInterface->Net();
- acc->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler);
- acc->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0);
- acc->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0);
+ IJabberNetInterface *ijnet = (*p)->JabberInterface->Net();
+ (*p)->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler);
+ (*p)->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0);
+ (*p)->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0);
}
}
- acc = acc->next;
}
}
@@ -186,15 +166,6 @@ JabberAccount::JabberAccount()
}
-int GetAccountsCount()
-{
- int i;
- JabberAccount *tmp = &Accounts;
- for(i = 0; tmp; tmp=tmp->next, i++)
- ;
- return i;
-}
-
char *date()
{