diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-16 13:59:44 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-16 13:59:44 +0300 |
commit | c4a68366af174e654d5735f244bf3beb8a81b143 (patch) | |
tree | 3a4540b0a57b02729d4fe9a6910981a732328322 /utilities.cpp | |
parent | 369c4ad5aedc204c4478381122880f3688fb34b8 (diff) |
used list<> from stl instead of my own implementation
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 117 |
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() { |