diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/Skype/src/skype_chat.cpp | 21 | ||||
| -rw-r--r-- | protocols/Skype/src/skype_contacts.cpp | 1 | ||||
| -rw-r--r-- | protocols/Skype/src/skype_dialogs.cpp | 8 | ||||
| -rw-r--r-- | protocols/Skype/src/skype_events.cpp | 3 | ||||
| -rw-r--r-- | protocols/Skype/src/skype_proto.h | 2 | 
5 files changed, 26 insertions, 9 deletions
diff --git a/protocols/Skype/src/skype_chat.cpp b/protocols/Skype/src/skype_chat.cpp index 8072f443e0..66fea56334 100644 --- a/protocols/Skype/src/skype_chat.cpp +++ b/protocols/Skype/src/skype_chat.cpp @@ -137,7 +137,7 @@ void CSkypeProto::InitChat()  	this->HookEvent(ME_GC_BUILDMENU, &CSkypeProto::OnGCMenuHook);
  }
 -char *CSkypeProto::StartChat(const char *cid)
 +char *CSkypeProto::StartChat(const char *cid, const SEStringList &invitedContacts)
  {
  	char *chatID;
  	SEString data;
 @@ -163,8 +163,14 @@ char *CSkypeProto::StartChat(const char *cid)  		chatID = ::mir_strdup(data);
  	}	
 +	conversation->AddConsumers(invitedContacts);
 +
  	conversation->GetPropDisplayname(data);
 -	char *chatName = ::mir_utf8decodeA(data);
 +	char *chatName;
 +	if (data.length())
 +		chatName = ::mir_utf8decodeA(data);
 +	else
 +		chatName = Translate("New conference");
  	GCSESSION gcw = {0};
  	gcw.cbSize = sizeof(gcw);
 @@ -372,6 +378,17 @@ int __cdecl CSkypeProto::OnGCEventHook(WPARAM, LPARAM lParam)  					CMessage::Ref message;
  					char *text = ::mir_utf8encode(gch->pszText);
  					conversation->PostText(text, message);
 +					
 +					char *nick = (char *)::DBGetString(NULL, this->m_szModuleName, "Nick");
 +					if (::stricmp(nick, "") == 0)
 +					{
 +						nick = this->login;
 +					}
 +
 +					this->SendChatMessage(
 +						chatID, 
 +						nick, 
 +						gch->pszText);
  				}
  			}
  			break;
 diff --git a/protocols/Skype/src/skype_contacts.cpp b/protocols/Skype/src/skype_contacts.cpp index bfdac69080..26e26326a4 100644 --- a/protocols/Skype/src/skype_contacts.cpp +++ b/protocols/Skype/src/skype_contacts.cpp @@ -742,6 +742,7 @@ void __cdecl CSkypeProto::LoadContactList(void*)  			char *name = ::mir_utf8decodeA(data);
  			HANDLE hContact = this->AddChatRoomByID(cid, name);
 +			//::DBWriteContactSettingString(hContact, this->m_szModuleName, "Nick", name);
  			CConversation::LOCAL_LIVESTATUS live;
  			conversations[i]->GetPropLocalLivestatus(live);
 diff --git a/protocols/Skype/src/skype_dialogs.cpp b/protocols/Skype/src/skype_dialogs.cpp index ed56eee734..f91416c599 100644 --- a/protocols/Skype/src/skype_dialogs.cpp +++ b/protocols/Skype/src/skype_dialogs.cpp @@ -556,7 +556,6 @@ INT_PTR CALLBACK CSkypeProto::InviteToChatProc(HWND hwndDlg, UINT msg, WPARAM wP  					SEStringList invitedContacts;
  					param->ppro->GetInviteContacts(NULL, hwndList, invitedContacts);
 -					CConversation::Ref conversation;
  					char *chatID = ::mir_strdup(param->id);
  					if (chatID)
 @@ -566,19 +565,18 @@ INT_PTR CALLBACK CSkypeProto::InviteToChatProc(HWND hwndDlg, UINT msg, WPARAM wP  							param->ppro->AddChatContact(chatID, invitedContacts[i]);
  						}
 +						CConversation::Ref conversation;
  						g_skype->GetConversationByIdentity(chatID, conversation);
  						conversation->AddConsumers(invitedContacts);
  					}
  					else
  					{
 -						chatID = param->ppro->StartChat(NULL);
 +						chatID = param->ppro->StartChat(NULL, invitedContacts);
 +
  						for (uint i = 0; i < invitedContacts.size(); i++)
  						{
  							param->ppro->AddChatContact(chatID, invitedContacts[i]);
  						}
 -
 -						g_skype->GetConversationByIdentity(chatID, conversation);
 -						conversation->AddConsumers(invitedContacts);
  					}
  				}
 diff --git a/protocols/Skype/src/skype_events.cpp b/protocols/Skype/src/skype_events.cpp index 793a09a4f3..9b1e442133 100644 --- a/protocols/Skype/src/skype_events.cpp +++ b/protocols/Skype/src/skype_events.cpp @@ -170,7 +170,8 @@ void CSkypeProto::OnMessage(CConversation::Ref conversation, CMessage::Ref messa  			HANDLE hContact = this->GetChatRoomByID(cid);
  			if ( !hContact || ::DBGetContactSettingWord(hContact, this->m_szModuleName, "Status", ID_STATUS_OFFLINE) == ID_STATUS_OFFLINE)
  			{
 -				this->StartChat(cid);
 +				SEStringList empty;
 +				this->StartChat(cid, empty);
  				CParticipant::Refs participants;
  				conversation->GetParticipants(participants, CConversation::OTHER_CONSUMERS);
 diff --git a/protocols/Skype/src/skype_proto.h b/protocols/Skype/src/skype_proto.h index 8fa24a18a7..bd2f8ed109 100644 --- a/protocols/Skype/src/skype_proto.h +++ b/protocols/Skype/src/skype_proto.h @@ -259,7 +259,7 @@ protected:  	void GetInviteContacts(HANDLE hItem, HWND hwndList, SEStringList &invitedContacts);
  	void InitChat();
 -	char *StartChat(const char *cid);
 +	char *StartChat(const char *cid, const SEStringList &invitedContacts);
  	void JoinToChat(const char *cid, bool showWindow = true);
  	void LeaveChat(const char *cid);
  | 
