summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2012-09-28 05:35:12 +0000
committerAlexander Lantsev <aunsane@gmail.com>2012-09-28 05:35:12 +0000
commitb22b6804903e1e8e0e51fd8c78d928f0204672b5 (patch)
treef369ac01abb576c2b1cb1798a29de166b28b7894
parentf67a19f8cae9d4532e908a75b9f921cfdc596f54 (diff)
- added some function to contacs loading
git-svn-id: http://svn.miranda-ng.org/main/trunk@1697 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--protocols/Skype/src/skype_proto.cpp56
-rw-r--r--protocols/Skype/src/skype_proto.h5
-rw-r--r--protocols/Skype/src/skype_subclassing.cpp23
-rw-r--r--protocols/Skype/src/skype_subclassing.h36
-rw-r--r--protocols/Skype/src/skype_utils.cpp2
5 files changed, 108 insertions, 14 deletions
diff --git a/protocols/Skype/src/skype_proto.cpp b/protocols/Skype/src/skype_proto.cpp
index 498239053b..aa9af339ae 100644
--- a/protocols/Skype/src/skype_proto.cpp
+++ b/protocols/Skype/src/skype_proto.cpp
@@ -39,7 +39,14 @@ CSkypeProto::~CSkypeProto()
mir_free(this->m_tszUserName);
}
-HANDLE __cdecl CSkypeProto::AddToList( int flags, PROTOSEARCHRESULT* psr ) { return 0; }
+HANDLE __cdecl CSkypeProto::AddToList(int flags, PROTOSEARCHRESULT* psr)
+{
+ if (psr->cbSize != sizeof(PROTOSEARCHRESULT))
+ return 0;
+
+ return this->AddToListBySkypeLogin(psr->id, psr->nick, psr->firstName, psr->lastName, flags);
+}
+
HANDLE __cdecl CSkypeProto::AddToListByEvent( int flags, int iContact, HANDLE hDbEvent ) { return 0; }
int __cdecl CSkypeProto::Authorize( HANDLE hDbEvent ) { return 0; }
int __cdecl CSkypeProto::AuthDeny( HANDLE hDbEvent, const TCHAR* szReason ) { return 0; }
@@ -203,6 +210,53 @@ void __cdecl CSkypeProto::SignIn(void*)
this->account->LoginWithPassword(mir_u2a(this->password), false, false);
this->account->BlockWhileLoggingIn();
this->SetStatus(this->m_iDesiredStatus);
+ this->ForkThread(&CSkypeProto::LoadContactList, this);
ReleaseMutex(this->signin_lock);
+}
+
+void __cdecl CSkypeProto::LoadContactList(void*)
+{
+ CContactGroup::Ref contacts;
+ g_skype->GetHardwiredContactGroup(CContactGroup::ALL_KNOWN_CONTACTS, contacts);
+
+ contacts->GetContacts(contacts->ContactList);
+ fetch(contacts->ContactList);
+
+ for (unsigned int i = 0; i < contacts->ContactList.size(); i++)
+ {
+ SEString contactName;
+ contacts->ContactList[i]->GetPropDisplayname(contactName);
+ printf("%3d. %s\n", i+1, (const char*)contactName);
+
+ //HANDLE hContact = AddToContactList(fbu, FACEBOOK_CONTACT_APPROVE, false, fbu->real_name.c_str());
+ //DBWriteContactSettingByte(hContact, m_szModuleName, FACEBOOK_KEY_CONTACT_TYPE, FACEBOOK_CONTACT_APPROVE);
+ }
+}
+
+HANDLE CSkypeProto::AddToListBySkypeLogin(TCHAR* skypeName, TCHAR* nickName, TCHAR* firstName, TCHAR* lastName, DWORD flags)
+{
+ //if (!skypeName)
+ return NULL;
+
+ /*BOOL bAdded;
+ HANDLE hContact = MraHContactFromEmail( _T2A(plpsEMail), lstrlen(plpsEMail), TRUE, TRUE, &bAdded);
+ if (hContact) {
+ if (nickName)
+ mraSetStringW(hContact, "Nick", nickName);
+ if (firstName)
+ mraSetStringW(hContact, "FirstName", firstName);
+ if (lastName)
+ mraSetStringW(hContact, "LastName", lastName);
+
+ if (flags & PALF_TEMPORARY)
+ DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);
+ else
+ DBDeleteContactSetting(hContact, "CList", "NotOnList");
+
+ if (bAdded)
+ MraUpdateContactInfo(hContact);
+ }
+
+ return hContact;*/
} \ No newline at end of file
diff --git a/protocols/Skype/src/skype_proto.h b/protocols/Skype/src/skype_proto.h
index 5f41c3dc01..a5597c4c4f 100644
--- a/protocols/Skype/src/skype_proto.h
+++ b/protocols/Skype/src/skype_proto.h
@@ -85,12 +85,15 @@ protected:
HANDLE signin_lock;
void __cdecl SignIn(void*);
+ void __cdecl LoadContactList(void*);
+
+ HANDLE AddToListBySkypeLogin(TCHAR* skypeName, TCHAR* nickName, TCHAR* firstName, TCHAR* lastName, DWORD flags);
void CreateService(const char* szService, SkypeServiceFunc serviceProc);
void CreateServiceParam(const char* szService, SkypeServiceFunc serviceProc, LPARAM lParam);
- HANDLE CreateHookableEvent(const char* szService);
+ HANDLE CreateEvent(const char* szService);
void HookEvent(const char*, SkypeEventFunc);
int SendBroadcast(int type, int result, HANDLE hProcess, LPARAM lParam);
diff --git a/protocols/Skype/src/skype_subclassing.cpp b/protocols/Skype/src/skype_subclassing.cpp
index 0de069a243..1c067f4c3a 100644
--- a/protocols/Skype/src/skype_subclassing.cpp
+++ b/protocols/Skype/src/skype_subclassing.cpp
@@ -1,6 +1,6 @@
#include "skype_subclassing.h"
-Account* CSkype::newAccount(int oid)
+CAccount* CSkype::newAccount(int oid)
{
return new CAccount(oid, this);
}
@@ -30,7 +30,7 @@ void CAccount::OnChange(int prop)
}
}
}
-};
+}
void CAccount::BlockWhileLoggingIn()
{
@@ -42,4 +42,21 @@ void CAccount::BlockWhileLoggingOut()
{
while ( !this->isLoggedOut)
Sleep(1);
-}; \ No newline at end of file
+}
+
+CContactGroup::CContactGroup(unsigned int oid, SERootObject* root) : ContactGroup(oid, root)
+{
+}
+
+void CContactGroup::OnChange(const ContactRef& contact)
+{
+}
+
+
+CContact::CContact(unsigned int oid, SERootObject* root) : Contact(oid, root)
+{
+}
+
+void CContact::OnChange(int prop)
+{
+} \ No newline at end of file
diff --git a/protocols/Skype/src/skype_subclassing.h b/protocols/Skype/src/skype_subclassing.h
index ffb971b828..5cd42cf5c3 100644
--- a/protocols/Skype/src/skype_subclassing.h
+++ b/protocols/Skype/src/skype_subclassing.h
@@ -2,14 +2,31 @@
#include <skype-embedded_2.h>
-class CAccount;
-
-class CSkype : public Skype
+class CContact : public Contact
{
public:
- Account* newAccount(int oid);
+ typedef DRef<CContact, Contact> Ref;
+ typedef DRefs<CContact, Contact> Refs;
+
+ CContact(unsigned int oid, SERootObject* root);
+
+protected:
+ void OnChange(int prop);
};
+class CContactGroup : public ContactGroup
+{
+public:
+ typedef DRef<CContactGroup, ContactGroup> Ref;
+ typedef DRefs<CContactGroup, ContactGroup> Refs;
+ CContactGroup(unsigned int oid, SERootObject* root);
+
+ CContact::Refs ContactList;
+
+protected:
+ void OnChange(const ContactRef& contact);
+};
+
class CAccount : public Account
{
public:
@@ -19,13 +36,16 @@ public:
bool isLoggedOut;
CAccount(unsigned int oid, SERootObject* root);
- void OnChange(int prop);
void BlockWhileLoggingIn();
void BlockWhileLoggingOut();
-};
-class CContact : public Contact
-{
+protected:
+ void OnChange(int prop);
};
+class CSkype : public Skype
+{
+public:
+ CAccount* newAccount(int oid);
+}; \ No newline at end of file
diff --git a/protocols/Skype/src/skype_utils.cpp b/protocols/Skype/src/skype_utils.cpp
index 34471d14be..057ce1aebd 100644
--- a/protocols/Skype/src/skype_utils.cpp
+++ b/protocols/Skype/src/skype_utils.cpp
@@ -28,7 +28,7 @@ void CSkypeProto::CreateServiceParam(const char* szService, SkypeServiceFunc ser
CreateServiceFunctionObjParam(moduleName, (MIRANDASERVICEOBJPARAM)*(void**)&serviceProc, this, lParam);
}
-HANDLE CSkypeProto::CreateHookableEvent(const char* szService)
+HANDLE CSkypeProto::CreateEvent(const char* szService)
{
char moduleName[MAXMODULELABELLENGTH];