summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-07-18 15:33:29 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-07-18 15:33:29 +0300
commit8ef72578611917675179230aec4a6956463ef39a (patch)
treed9e6f6b2635f9a756f3e91cf55e251bedb1d55cb
parent0c99b116f722a4609c29a4fbda986cd1e2c6790a (diff)
started ui implementation, some rework
-rw-r--r--commonheaders.h2
-rw-r--r--init.cpp2
-rw-r--r--ui.cpp26
-rw-r--r--utilities.cpp109
-rw-r--r--utilities.h19
5 files changed, 118 insertions, 40 deletions
diff --git a/commonheaders.h b/commonheaders.h
index 0fd971d..35b71ce 100644
--- a/commonheaders.h
+++ b/commonheaders.h
@@ -36,8 +36,8 @@ using std::list;
#include "resource.h"
#include "constants.h"
+#include "utilities.h"
#include "globals.h"
#include "main.h"
-#include "utilities.h"
#include "m_msg_buttonsbar.h"
#endif
diff --git a/init.cpp b/init.cpp
index ea225f3..4016b8a 100644
--- a/init.cpp
+++ b/init.cpp
@@ -75,7 +75,7 @@ extern "C" int __declspec(dllexport) Load(PLUGINLINK *link)
HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
mir_getMMI(&mmi);
mir_getUTFI(&utfi);
- mir_getXI(&xi);
+ mir_getXI(&xi); //TODO: check if we have access to api
nu.cbSize = sizeof(nu);
nu.szSettingsModule = szModuleName;
nu.szDescriptiveName = "Juick plugin HTTP connections (avatars)";
diff --git a/ui.cpp b/ui.cpp
index 8ea8424..bca98ef 100644
--- a/ui.cpp
+++ b/ui.cpp
@@ -16,14 +16,26 @@
#include "commonheaders.h"
+extern list <JabberAccount*> Accounts;
+
int CreateButtons()
{
- BBButton button = {0};
- button.cbSize = sizeof(button);
- button.pszModuleName = szModuleName;
- button.pszTooltip = "Test button";
- button.bbbFlags = BBBF_ISPUSHBUTTON |BBBF_ISIMBUTTON;
- button.dwDefPos = 100;
- CallService(MS_BB_ADDBUTTON, 0, (WPARAM)&button);
+ if(ServiceExists(MS_BB_ADDBUTTON))
+ {
+ BBButton button = {0};
+ button.cbSize = sizeof(button);
+ button.pszModuleName = szModuleName;
+ button.ptszTooltip = _T("Test button");
+ button.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISCHATBUTTON | BBBF_HIDDEN;
+ button.dwDefPos = 500;
+ button.dwButtonID = 0x000001;
+ CallService(MS_BB_ADDBUTTON, 0, (WPARAM)&button);
+ button.bbbFlags -= BBBF_HIDDEN;
+ for(list <JabberAccount*>::iterator p = Accounts.begin(); p != Accounts.end(); p++)
+ {
+ if((*p)->getJuickContact() != INVALID_HANDLE_VALUE)
+ CallService(MS_BB_SETBUTTONSTATE, LPARAM((*p)->getJuickContact()), (WPARAM)&button);
+ }
+ }
return 0;
} \ No newline at end of file
diff --git a/utilities.cpp b/utilities.cpp
index 986edbc..99c6603 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -38,9 +38,10 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts,
PROTOACCOUNT **accounts;
ProtoEnumAccounts(&count, &accounts);
list <JabberAccount*>::iterator p;
+ Accounts.clear();
Accounts.push_back(new JabberAccount);
p = Accounts.begin();
- (*p)->AccountNumber = 0;
+ (*p)->setAccountNumber(0);
for(int i = 0; i < count; i++) //get only jabber accounts from all accounts
{
char *tmp = mir_u2a(accounts[i]->tszAccountName);
@@ -48,10 +49,12 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts,
int a = 0;
if(JIftmp)
{
- (*p)->JabberInterface = JIftmp;
- (*p)->AccountName = accounts[i]->tszAccountName;
- (*p)->AccountNumber = a;
- (*p)->hIqHandler = (*p)->hMessageHandler = (*p)->hPrescenseHandler = INVALID_HANDLE_VALUE;
+ (*p)->setJabberInterface(JIftmp);
+ (*p)->setAccountName(accounts[i]->tszAccountName);
+ (*p)->setAccountNumber(a);
+ (*p)->setIqHandler(INVALID_HANDLE_VALUE);
+ (*p)->setMessageHandler(INVALID_HANDLE_VALUE);
+ (*p)->setPrescenseHandler(INVALID_HANDLE_VALUE);
a++;
p++;
Accounts.push_back(new JabberAccount);
@@ -75,18 +78,16 @@ int HandleDbNewContact(WPARAM w, LPARAM l)
{
if(!(*p))
break;
- IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
- LPTSTR tmp = ijsys->ContactToJID(HANDLE(w));
+ LPTSTR tmp = (*p)->getJabberInterface()->Sys()->ContactToJID(HANDLE(w));
if(tmp)
{
if(_tcsstr(_T(JUICK_JID), tmp))
{
- if((*p)->hPrescenseHandler == INVALID_HANDLE_VALUE && (*p)->hMessageHandler == INVALID_HANDLE_VALUE && (*p)->hIqHandler == INVALID_HANDLE_VALUE)
+ if((*p)->getPrescenseHandler() == INVALID_HANDLE_VALUE && (*p)->getMessageHandler() == INVALID_HANDLE_VALUE && (*p)->getIqHandler() == INVALID_HANDLE_VALUE)
{
- 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);
+ (*p)->setPrescenseHandler((*p)->getJabberInterface()->Net()->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler));
+ (*p)->setMessageHandler((*p)->getJabberInterface()->Net()->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0));
+ (*p)->setIqHandler((*p)->getJabberInterface()->Net()->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0));
}
}
}
@@ -100,18 +101,16 @@ int HandleDbContactDeleted(WPARAM w, LPARAM l)
{
if(!(*p))
break;
- IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
- LPTSTR tmp = ijsys->ContactToJID(HANDLE(w));
+ LPTSTR tmp = (*p)->getJabberInterface()->Sys()->ContactToJID(HANDLE(w));
if(tmp)
{
if(_tcsstr(_T(JUICK_JID), tmp))
{
- if((*p)->hPrescenseHandler != INVALID_HANDLE_VALUE && (*p)->hMessageHandler != INVALID_HANDLE_VALUE && (*p)->hIqHandler != INVALID_HANDLE_VALUE)
+ if((*p)->getPrescenseHandler() != INVALID_HANDLE_VALUE && (*p)->getMessageHandler() != INVALID_HANDLE_VALUE && (*p)->getIqHandler() != INVALID_HANDLE_VALUE)
{
- IJabberNetInterface *ijnet = (*p)->JabberInterface->Net();
- ijnet->RemoveHandler((*p)->hPrescenseHandler);
- ijnet->RemoveHandler((*p)->hMessageHandler);
- ijnet->RemoveHandler((*p)->hIqHandler);
+ (*p)->getJabberInterface()->Net()->RemoveHandler((*p)->getPrescenseHandler());
+ (*p)->getJabberInterface()->Net()->RemoveHandler((*p)->getMessageHandler());
+ (*p)->getJabberInterface()->Net()->RemoveHandler((*p)->getIqHandler());
}
}
}
@@ -126,20 +125,19 @@ void FindJuickAccounts()
{
if(!(*p))
break;
- IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys();
- if(ijsys->ContactFromJID(_T(JUICK_JID))) //i should use this contact handler
+ if((*p)->getJabberInterface()->Sys()->ContactFromJID(_T(JUICK_JID))) //i should use this contact handler
{
- if((*p)->hPrescenseHandler == INVALID_HANDLE_VALUE && (*p)->hMessageHandler == INVALID_HANDLE_VALUE && (*p)->hIqHandler == INVALID_HANDLE_VALUE)
+ if((*p)->getPrescenseHandler() == INVALID_HANDLE_VALUE && (*p)->getMessageHandler() == INVALID_HANDLE_VALUE && (*p)->getIqHandler() == INVALID_HANDLE_VALUE)
{
- 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);
+ (*p)->setPrescenseHandler((*p)->getJabberInterface()->Net()->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler));
+ (*p)->setMessageHandler((*p)->getJabberInterface()->Net()->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0));
+ (*p)->setIqHandler((*p)->getJabberInterface()->Net()->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0));
}
}
}
}
+
static JABBER_HANDLER_FUNC PrescenseHandler(IJabberInterface *ji, HXML node, void *pUserData)
{
return FALSE;
@@ -158,13 +156,66 @@ static JABBER_HANDLER_FUNC IqHandler(IJabberInterface *ji, HXML node, void *pUse
return FALSE;
}
+//JabberAccount class implementation
-JabberAccount::JabberAccount()
+void JabberAccount::setAccountName(TCHAR *Name)
+{
+ AccountName = Name;
+}
+void JabberAccount::setAccountNumber(int Number)
+{
+ AccountNumber = Number;
+}
+void JabberAccount::setJabberInterface(IJabberInterface *JIf)
+{
+ JabberInterface = JIf;
+}
+void JabberAccount::setPrescenseHandler(HANDLE hHandler)
{
- AccountName = _T("");
- AccountNumber = 0;
+ hPrescenseHandler = hHandler;
+}
+void JabberAccount::setMessageHandler(HANDLE hHandler)
+{
+ hMessageHandler = hHandler;
+}
+void JabberAccount::setIqHandler(HANDLE hHandler)
+{
+ hIqHandler = hHandler;
+}
+TCHAR *JabberAccount::getAccountName()
+{
+ return AccountName;
}
+int JabberAccount::getAccountNumber()
+{
+ return AccountNumber;
+}
+IJabberInterface *JabberAccount::getJabberInterface()
+{
+ return JabberInterface;
+}
+HANDLE JabberAccount::getMessageHandler()
+{
+ return hMessageHandler;
+}
+HANDLE JabberAccount::getPrescenseHandler()
+{
+ return hPrescenseHandler;
+}
+HANDLE JabberAccount::getIqHandler()
+{
+ return hIqHandler;
+}
+HANDLE JabberAccount::getJuickContact()
+{
+ HANDLE hContact;
+ if(hContact = JabberInterface->Sys()->ContactFromJID(_T(JUICK_JID)))
+ return hContact;
+ return INVALID_HANDLE_VALUE; //TODO: implement this
+}
+
+//end JabberAccount class implementation
char *date()
diff --git a/utilities.h b/utilities.h
index 8b67393..97ecfe5 100644
--- a/utilities.h
+++ b/utilities.h
@@ -17,9 +17,24 @@
#ifndef UTILITIES_H
#define UTILITIES_H
TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef);
-class JabberAccount {
+class JabberAccount
+{
public:
- JabberAccount();
+ void setAccountName(TCHAR *Name);
+ void setAccountNumber(int Number);
+ void setJabberInterface(IJabberInterface *JIf);
+ void setPrescenseHandler(HANDLE hHandler);
+ void setMessageHandler(HANDLE hHandler);
+ void setIqHandler(HANDLE hHandler);
+
+ HANDLE getJuickContact();
+ TCHAR *getAccountName();
+ int getAccountNumber();
+ IJabberInterface *getJabberInterface();
+ HANDLE getPrescenseHandler();
+ HANDLE getMessageHandler();
+ HANDLE getIqHandler();
+private:
TCHAR *AccountName;
int AccountNumber;
IJabberInterface *JabberInterface;