diff options
Diffstat (limited to 'protocols/Skype/src/skype_events.cpp')
-rw-r--r-- | protocols/Skype/src/skype_events.cpp | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/protocols/Skype/src/skype_events.cpp b/protocols/Skype/src/skype_events.cpp index 541b776e15..8b99ec5219 100644 --- a/protocols/Skype/src/skype_events.cpp +++ b/protocols/Skype/src/skype_events.cpp @@ -4,7 +4,7 @@ int CSkypeProto::OnModulesLoaded(WPARAM, LPARAM) {
this->HookEvent(ME_OPT_INITIALISE, &CSkypeProto::OnOptionsInit);
this->HookEvent(ME_USERINFO_INITIALISE, &CSkypeProto::OnUserInfoInit);
- this->login = this->GetSettingString(SKYPE_SETTINGS_LOGIN);
+ this->login = ::DBGetString(NULL, this->m_szModuleName, "sid");
this->rememberPassword = this->GetSettingByte("RememberPassword") > 0;
return 0;
@@ -23,3 +23,80 @@ int CSkypeProto::OnContactDeleted(WPARAM wParam, LPARAM lParam) return 0;
}
+
+void CSkypeProto::OnMessageSended(CConversation::Ref conversation, CMessage::Ref message)
+{
+ uint timestamp;
+ message->GetPropTimestamp(timestamp);
+
+ SEString data;
+
+ message->GetPropAuthor(data);
+ char *sid = ::mir_strdup((const char*)data);
+
+ message->GetPropBodyXml(data);
+ char *text = ::mir_strdup((const char*)data);
+
+ Participant::Refs participants;
+ conversation->GetParticipants(participants, CConversation::OTHER_CONSUMERS);
+
+ for (uint i = 0; i < participants.size(); i ++)
+ {
+ participants[i]->GetPropIdentity(data);
+ char *contactSid = ::mir_strdup((const char *)data);
+ //todo: get nickname
+ this->RaiseMessageSendedEvent(
+ timestamp,
+ contactSid,
+ contactSid,
+ text);
+ }
+}
+
+void CSkypeProto::OnMessageReceived(CConversation::Ref conversation, CMessage::Ref message)
+{
+ uint timestamp;
+ message->GetPropTimestamp(timestamp);
+
+ SEString data;
+
+ message->GetPropAuthor(data);
+ char *sid = ::mir_strdup((const char*)data);
+
+ message->GetPropAuthorDisplayname(data);
+ char *nick = ::mir_strdup((const char*)data);
+
+ message->GetPropBodyXml(data);
+ char *text = ::mir_strdup((const char*)data);
+
+ this->RaiseMessageReceivedEvent(
+ (DWORD)timestamp,
+ sid,
+ nick,
+ text);
+
+ /*const char *msg = (const char*)propValues[2];
+ int len = ::strlen(msg) + 8;
+ wchar_t *xml = new wchar_t[len];
+ ::mir_sntprintf(xml, len, L"<m>%s</m>", ::mir_utf8decodeW(msg));
+
+ int bytesProcessed = 0;
+ HXML hXml = xi.parseString(xml, &bytesProcessed, NULL);*/
+}
+
+void CSkypeProto::OnMessage(CConversation::Ref conversation, CMessage::Ref message)
+{
+ CMessage::TYPE messageType;
+ message->GetPropType(messageType);
+
+ CMessage::SENDING_STATUS sendingStatus;
+ message->GetPropSendingStatus(sendingStatus);
+
+ if (messageType == CMessage::POSTED_TEXT)
+ {
+ if (sendingStatus == CMessage::SENT)
+ this->OnMessageSended(conversation, message);
+ else if (!sendingStatus)
+ this->OnMessageReceived(conversation, message);
+ }
+}
\ No newline at end of file |