diff options
author | Kirill Volinsky <mataes2007@gmail.com> | 2012-10-13 18:34:25 +0000 |
---|---|---|
committer | Kirill Volinsky <mataes2007@gmail.com> | 2012-10-13 18:34:25 +0000 |
commit | 1a9f50fcbc79413ccc669349b682aa6a6ebb398b (patch) | |
tree | a7673155e97d56f5714a5f9cb3e74f941e961346 /protocols/Twitter/chat.cpp | |
parent | 5aa2a6fdad72feeff99041bfdf17fd607a45033a (diff) |
Twitter: folders restructurization
git-svn-id: http://svn.miranda-ng.org/main/trunk@1909 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Twitter/chat.cpp')
-rw-r--r-- | protocols/Twitter/chat.cpp | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/protocols/Twitter/chat.cpp b/protocols/Twitter/chat.cpp deleted file mode 100644 index cafb46025c..0000000000 --- a/protocols/Twitter/chat.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/*
-Copyright © 2009 Jim Porter
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "proto.h"
-
-#include <set>
-#include <ctime>
-
-void TwitterProto::UpdateChat(const twitter_user &update)
-{
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
- gcd.iType = GC_EVENT_MESSAGE;
-
- GCEVENT gce = {sizeof(gce)};
- gce.pDest = &gcd;
- gce.dwFlags = GC_TCHAR|GCEF_ADDTOLOG;
- gce.pDest = &gcd;
- gce.ptszUID = mir_a2t(update.username.c_str());
- gce.bIsMe = (update.username == twit_.get_username());
- //TODO: write code here to replace % with %% in update.status.text (which is a std::string)
-
- std::string chatText = update.status.text;
-
- replaceAll(chatText, "%", "%%");
-
- gce.ptszText = mir_a2t_cp(chatText.c_str(),CP_UTF8);
- //gce.ptszText = mir_a2t_cp(update.status.text.c_str(),CP_UTF8);
- gce.time = static_cast<DWORD>(update.status.time);
-
- DBVARIANT nick;
- HANDLE hContact = UsernameToHContact(update.username.c_str());
- if(hContact && !DBGetContactSettingString(hContact,"CList","MyHandle",&nick))
- {
- gce.ptszNick = mir_a2t(nick.pszVal);
- DBFreeVariant(&nick);
- }
- else
- gce.ptszNick = mir_a2t(update.username.c_str());
-
- CallServiceSync(MS_GC_EVENT,0,reinterpret_cast<LPARAM>(&gce));
-
- mir_free(const_cast<TCHAR*>(gce.ptszNick));
- mir_free(const_cast<TCHAR*>(gce.ptszUID));
- mir_free(const_cast<TCHAR*>(gce.ptszText));
-}
-
-int TwitterProto::OnChatOutgoing(WPARAM wParam,LPARAM lParam)
-{
- GCHOOK *hook = reinterpret_cast<GCHOOK*>(lParam);
- if ( strcmp(hook->pDest->pszModule, m_szModuleName))
- return 0;
-
- switch(hook->pDest->iType) {
- case GC_USER_MESSAGE:
- LOG ( _T("**Chat - Outgoing message: %s"), hook->ptszText);
- {
- mir_ptr<char> text( mir_utf8encodeT(hook->ptszText));
-
- std::string tweet(text);
- replaceAll(tweet, "%%", "%"); // the chat plugin will turn "%" into "%%", so we have to change it back :/
-
- char *varTweet = mir_strdup( tweet.c_str());
- ForkThread(&TwitterProto::SendTweetWorker, this, varTweet);
- }
- break;
-
- case GC_USER_PRIVMESS:
- {
- mir_ptr<char> text( mir_t2a(hook->ptszUID));
- CallService(MS_MSG_SENDMESSAGE, WPARAM(UsernameToHContact(text)), 0);
- }
- break;
- }
-
- return 0;
-}
-
-// TODO: remove nick?
-void TwitterProto::AddChatContact(const char *name,const char *nick)
-{
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
- gcd.iType = GC_EVENT_JOIN;
-
- GCEVENT gce = {sizeof(gce)};
- gce.pDest = &gcd;
- gce.dwFlags = GC_TCHAR;
- gce.ptszNick = mir_a2t(nick ? nick:name);
- gce.ptszUID = mir_a2t(name);
- gce.bIsMe = false;
- gce.ptszStatus = _T("Normal");
- gce.time = static_cast<DWORD>(time(0));
- CallServiceSync(MS_GC_EVENT,0,reinterpret_cast<LPARAM>(&gce));
-
- mir_free(const_cast<TCHAR*>(gce.ptszNick));
- mir_free(const_cast<TCHAR*>(gce.ptszUID));
-}
-
-void TwitterProto::DeleteChatContact(const char *name)
-{
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
- gcd.iType = GC_EVENT_PART;
-
- GCEVENT gce = {sizeof(gce)};
- gce.pDest = &gcd;
- gce.dwFlags = GC_TCHAR;
- gce.ptszNick = mir_a2t(name);
- gce.ptszUID = gce.ptszNick;
- gce.time = static_cast<DWORD>(time(0));
- CallServiceSync(MS_GC_EVENT,0,reinterpret_cast<LPARAM>(&gce));
-
- mir_free(const_cast<TCHAR*>(gce.ptszNick));
-}
-
-int TwitterProto::OnJoinChat(WPARAM,LPARAM suppress)
-{
- GCSESSION gcw = {sizeof(gcw)};
-
- // ***** Create the group chat session
- gcw.dwFlags = GC_TCHAR;
- gcw.iType = GCW_CHATROOM;
- gcw.pszModule = m_szModuleName;
- gcw.ptszName = m_tszUserName;
- gcw.ptszID = m_tszUserName;
- CallServiceSync(MS_GC_NEWSESSION, 0, (LPARAM)&gcw);
-
- if(m_iStatus != ID_STATUS_ONLINE)
- return 0;
-
- // ***** Create a group
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
-
- GCEVENT gce = {sizeof(gce)};
- gce.pDest = &gcd;
- gce.dwFlags = GC_TCHAR;
-
- gcd.iType = GC_EVENT_ADDGROUP;
- gce.ptszStatus = _T("Normal");
- CallServiceSync(MS_GC_EVENT,0,reinterpret_cast<LPARAM>(&gce));
-
- // ***** Hook events
- HookProtoEvent(ME_GC_EVENT,&TwitterProto::OnChatOutgoing,this);
-
- // Note: Initialization will finish up in SetChatStatus, called separately
- if(!suppress)
- SetChatStatus(m_iStatus);
-
- in_chat_ = true;
- return 0;
-}
-
-int TwitterProto::OnLeaveChat(WPARAM,LPARAM)
-{
- in_chat_ = false;
-
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
- gcd.iType = GC_EVENT_CONTROL;
-
- GCEVENT gce = {sizeof(gce)};
- gce.dwFlags = GC_TCHAR;
- gce.pDest = &gcd;
-
- CallServiceSync(MS_GC_EVENT,SESSION_OFFLINE, reinterpret_cast<LPARAM>(&gce));
- CallServiceSync(MS_GC_EVENT,SESSION_TERMINATE,reinterpret_cast<LPARAM>(&gce));
-
- return 0;
-}
-
-void TwitterProto::SetChatStatus(int status)
-{
- GCDEST gcd = { m_szModuleName };
- gcd.ptszID = const_cast<TCHAR*>(m_tszUserName);
- gcd.iType = GC_EVENT_CONTROL;
-
- GCEVENT gce = {sizeof(gce)};
- gce.dwFlags = GC_TCHAR;
- gce.pDest = &gcd;
-
- if(status == ID_STATUS_ONLINE)
- {
- // Add all friends to contact list
- for(HANDLE hContact = db_find_first();
- hContact;
- hContact = db_find_next(hContact))
- {
- if(!IsMyContact(hContact))
- continue;
-
- DBVARIANT uid,nick;
- if( DBGetContactSettingString(hContact,m_szModuleName,TWITTER_KEY_UN,&uid))
- continue;
-
- if( !DBGetContactSettingString(hContact,"CList","MyHandle",&nick))
- AddChatContact(uid.pszVal,nick.pszVal);
- else
- AddChatContact(uid.pszVal);
-
- DBFreeVariant(&nick);
- DBFreeVariant(&uid);
- }
-
- // For some reason, I have to send an INITDONE message, even if I'm not actually
- // initializing the room...
- CallServiceSync(MS_GC_EVENT,SESSION_INITDONE,reinterpret_cast<LPARAM>(&gce));
- CallServiceSync(MS_GC_EVENT,SESSION_ONLINE, reinterpret_cast<LPARAM>(&gce));
- }
- else
- CallServiceSync(MS_GC_EVENT,SESSION_OFFLINE,reinterpret_cast<LPARAM>(&gce));
-}
\ No newline at end of file |