summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commonheaders.h3
-rw-r--r--init.cpp4
-rw-r--r--juick.vcproj20
-rw-r--r--utilities.cpp117
-rw-r--r--utilities.h1
5 files changed, 67 insertions, 78 deletions
diff --git a/commonheaders.h b/commonheaders.h
index 32737a7..3214eb2 100644
--- a/commonheaders.h
+++ b/commonheaders.h
@@ -20,6 +20,9 @@
#include <malloc.h>
#include <time.h>
+#include <list>
+using std::list;
+
#define MIRANDA_VER 0x0800
#include <newpluginapi.h>
diff --git a/init.cpp b/init.cpp
index 80ad08f..e122349 100644
--- a/init.cpp
+++ b/init.cpp
@@ -16,7 +16,6 @@
#include "commonheaders.h"
-
#define PLUGIN_NAME "juick"
HINSTANCE hInst;
@@ -24,8 +23,7 @@ static HANDLE hAccountsChanges, hDbContactAdded;
PLUGINLINK *pluginLink;
static int OnModulesLoaded(WPARAM wParam,LPARAM lParam);
extern char *date();
-JabberAccount Accounts;
-int JabberAccountsCount = 0;
+list <JabberAccount*> Accounts;
struct MM_INTERFACE mmi;
struct UTF8_INTERFACE utfi;
diff --git a/juick.vcproj b/juick.vcproj
index 041fbb8..eef7c93 100644
--- a/juick.vcproj
+++ b/juick.vcproj
@@ -154,7 +154,8 @@
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
- PrecompiledHeaderFile=".\Debug/testplug.pch"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="commonheaders.h"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
@@ -610,10 +611,27 @@
<File
RelativePath=".\init.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="commonheaders.h"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath=".\main.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath=".\options.cpp"
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()
{
diff --git a/utilities.h b/utilities.h
index 9ddf044..e31e35f 100644
--- a/utilities.h
+++ b/utilities.h
@@ -24,7 +24,6 @@ public:
int AccountNumber;
IJabberInterface *JabberInterface;
HJHANDLER hPrescenseHandler, hMessageHandler, hIqHandler;
- class JabberAccount *next;
BOOL operator !();
};