diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-18 15:33:29 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-18 15:33:29 +0300 |
commit | 8ef72578611917675179230aec4a6956463ef39a (patch) | |
tree | d9e6f6b2635f9a756f3e91cf55e251bedb1d55cb | |
parent | 0c99b116f722a4609c29a4fbda986cd1e2c6790a (diff) |
started ui implementation, some rework
-rw-r--r-- | commonheaders.h | 2 | ||||
-rw-r--r-- | init.cpp | 2 | ||||
-rw-r--r-- | ui.cpp | 26 | ||||
-rw-r--r-- | utilities.cpp | 109 | ||||
-rw-r--r-- | utilities.h | 19 |
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 @@ -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)"; @@ -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; |