From 83e7cec51dafbdd664cb0ece45d0e1b2d1d789bf Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Mon, 6 May 2013 19:50:10 +0000 Subject: - add "invite to chat" button in group chat dialog - add notification about ending of group call git-svn-id: http://svn.miranda-ng.org/main/trunk@4595 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Skype/src/skype_events.cpp | 69 +++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 16 deletions(-) (limited to 'protocols/Skype/src/skype_events.cpp') diff --git a/protocols/Skype/src/skype_events.cpp b/protocols/Skype/src/skype_events.cpp index fa75b0d5fe..4cc82e4853 100644 --- a/protocols/Skype/src/skype_events.cpp +++ b/protocols/Skype/src/skype_events.cpp @@ -12,6 +12,13 @@ int CSkypeProto::OnModulesLoaded(WPARAM, LPARAM) BBButton bbd = { sizeof(bbd) }; bbd.pszModuleName = MODULE; + bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON; + bbd.ptszTooltip = ::TranslateT("Invite to conference"); + bbd.hIcon = CSkypeProto::GetIconHandle("confInvite"); + bbd.dwButtonID = BBB_ID_CONF_INVITE; + bbd.dwDefPos = 100 + bbd.dwButtonID; + ::CallService(MS_BB_ADDBUTTON, 0, (LPARAM)&bbd); + bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON; bbd.ptszTooltip = ::TranslateT("Spawn conference"); bbd.hIcon = CSkypeProto::GetIconHandle("confSpawn"); @@ -67,20 +74,6 @@ int CSkypeProto::OnContactDeleted(WPARAM wParam, LPARAM lParam) return 0; } -int __cdecl CSkypeProto::OnSrmmWindowOpen(WPARAM, LPARAM lParam) -{ - MessageWindowEventData *ev = (MessageWindowEventData*)lParam; - if (ev->uType == MSG_WINDOW_EVT_OPENING && ev->hContact) - { - BBButton bbd = { sizeof(bbd) }; - bbd.pszModuleName = MODULE; - bbd.dwButtonID = BBB_ID_CONF_SPAWN; - bbd.bbbFlags = (!strcmp( GetContactProto(ev->hContact), this->m_szModuleName)) ? 0 : BBSF_HIDDEN | BBSF_DISABLED; - ::CallService(MS_BB_SETBUTTONSTATE, (WPARAM)ev->hContact, (LPARAM)&bbd); - } - return 0; -} - INT_PTR __cdecl CSkypeProto::OnAccountManagerInit(WPARAM wParam, LPARAM lParam) { return (int)::CreateDialogParam( @@ -110,13 +103,41 @@ int __cdecl CSkypeProto::OnOptionsInit(WPARAM wParam, LPARAM lParam) return 0; } +int __cdecl CSkypeProto::OnSrmmWindowOpen(WPARAM, LPARAM lParam) +{ + MessageWindowEventData *ev = (MessageWindowEventData*)lParam; + if (ev->uType == MSG_WINDOW_EVT_OPENING && ev->hContact) + { + BBButton bbd = { sizeof(bbd) }; + bbd.pszModuleName = MODULE; + bbd.bbbFlags = (!strcmp( GetContactProto(ev->hContact), this->m_szModuleName)) ? 0 : BBSF_HIDDEN | BBSF_DISABLED; + + bbd.dwButtonID = BBB_ID_CONF_INVITE; + ::CallService(MS_BB_SETBUTTONSTATE, (WPARAM)ev->hContact, (LPARAM)&bbd); + + bbd.dwButtonID = BBB_ID_CONF_SPAWN; + ::CallService(MS_BB_SETBUTTONSTATE, (WPARAM)ev->hContact, (LPARAM)&bbd); + } + return 0; +} + int __cdecl CSkypeProto::OnTabSRMMButtonPressed(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; CustomButtonClickData *cbcd = (CustomButtonClickData *)lParam; - if (cbcd->dwButtonId == BBB_ID_CONF_SPAWN) + switch (cbcd->dwButtonId) { + case BBB_ID_CONF_INVITE: + if (this->IsOnline() && this->IsChatRoom(hContact)) + { + StringList targets = this->GetChatUsers(mir_ptr(::db_get_wsa(hContact, this->m_szModuleName, "ChatRoomID"))); + + this->StartChat(targets); + } + break; + + case BBB_ID_CONF_SPAWN: if (this->IsOnline() && !this->IsChatRoom(hContact)) { StringList targets; @@ -124,6 +145,7 @@ int __cdecl CSkypeProto::OnTabSRMMButtonPressed(WPARAM wParam, LPARAM lParam) this->StartChat(targets); } + break; } return 1; @@ -575,7 +597,22 @@ void CSkypeProto::OnMessage(CConversation::Ref conversation, CMessage::Ref messa conversation->GetPropIdentity(data); mir_ptr cid( ::mir_utf8decodeW(data)); HANDLE hContact = this->GetChatRoomByCid(cid); - this->RaiseChatEvent(cid, this->login, /*GC_EVENT_NOTICE*/ 0x0020, /*GCEF_ADDTOLOG*/ 0x0001, 0, NULL, ::TranslateT("There was incoming call")); + this->RaiseChatEvent(cid, this->login, /*GC_EVENT_INFORMATION*/ 0x0100, /*GCEF_ADDTOLOG*/ 0x0001, 0, NULL, ::TranslateT("Group call")); + } + break; + + case CMessage::ENDED_LIVESESSION: + + CConversation::TYPE type; + conversation->GetPropType(type); + if (type != CConversation::DIALOG) + { + SEString data; + + conversation->GetPropIdentity(data); + mir_ptr cid( ::mir_utf8decodeW(data)); + HANDLE hContact = this->GetChatRoomByCid(cid); + this->RaiseChatEvent(cid, this->login, /*GC_EVENT_INFORMATION*/ 0x0100, /*GCEF_ADDTOLOG*/ 0x0001, 0, NULL, ::TranslateT("The call is completed")); } break; -- cgit v1.2.3