From 1680c6d262eb0525c1af95195b5b79839a5e2ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Tue, 22 May 2012 23:20:07 +0000 Subject: Added Omegle protocol. git-svn-id: http://svn.miranda-ng.org/main/trunk@136 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Omegle/messages.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 protocols/Omegle/messages.cpp (limited to 'protocols/Omegle/messages.cpp') diff --git a/protocols/Omegle/messages.cpp b/protocols/Omegle/messages.cpp new file mode 100644 index 0000000000..7d2418f3e6 --- /dev/null +++ b/protocols/Omegle/messages.cpp @@ -0,0 +1,92 @@ +/* + +Omegle plugin for Miranda Instant Messenger +_____________________________________________ + +Copyright © 2011-12 Robert Pösel + +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 . + +*/ + +#include "common.h" + +void OmegleProto::SendMsgWorker(void *p) +{ + if(p == NULL) + return; + + ScopedLock s( facy.send_message_lock_ ); + + std::string *data = static_cast(p); + + *data = utils::text::trim(*data); + + if (facy.state_ == STATE_ACTIVE && data->length() && facy.send_message( *data )) + { + TCHAR *msg = mir_a2t_cp(data->c_str(), CP_UTF8); + UpdateChat(facy.nick_, msg); + mir_free(msg); + } + + delete data; +} + +void OmegleProto::SendTypingWorker(void *p) +{ + if (p == NULL) + return; + + // Save typing info + bool typ = !_tcscmp(static_cast(p), _T("1")); + mir_free(p); + + // Ignore same typing info + if ( facy.typing_ == typ ) + return; + + facy.typing_ = typ; + // Wait for eventually changes to typing info by other thread and ignore if changed + SleepEx( 2000, true ); + if ( facy.typing_ != typ || facy.old_typing_ == typ || facy.state_ != STATE_ACTIVE ) + return; + + facy.old_typing_ = typ; + if (typ) + facy.typing_start(); + else + facy.typing_stop(); +} + +void OmegleProto::NewChatWorker(void*p) +{ + NewChat(); +} + +void OmegleProto::StopChatWorker(void*p) +{ + StopChat(); +} + +int OmegleProto::SendMsg(HANDLE hContact, int flags, const char *msg) +{ + // TODO: msg comes as Unicode (retyped wchar_t*), why should we convert it as ANSI to UTF-8? o_O +/* if ( flags & PREF_UNICODE ) + msg = mir_utf8encode(msg); + + facy.msgid_ = (facy.msgid_ % 1024)+1; + ForkThread( &OmegleProto::SendMsgWorker, this,new send_direct(hContact,msg,(HANDLE)facy.msgid_) ); + return facy.msgid_;*/ + return 0; +} -- cgit v1.2.3