summaryrefslogtreecommitdiff
path: root/protocols/Omegle/messages.cpp
diff options
context:
space:
mode:
authorRobert Pösel <robyer@seznam.cz>2012-05-22 23:20:07 +0000
committerRobert Pösel <robyer@seznam.cz>2012-05-22 23:20:07 +0000
commit1680c6d262eb0525c1af95195b5b79839a5e2ce9 (patch)
tree41ea277d8d4ee4af48aff151daabdac485f49938 /protocols/Omegle/messages.cpp
parent3615f38b14197411ed8ae434b38d2ec00bf62768 (diff)
Added Omegle protocol.
git-svn-id: http://svn.miranda-ng.org/main/trunk@136 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Omegle/messages.cpp')
-rw-r--r--protocols/Omegle/messages.cpp92
1 files changed, 92 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "common.h"
+
+void OmegleProto::SendMsgWorker(void *p)
+{
+ if(p == NULL)
+ return;
+
+ ScopedLock s( facy.send_message_lock_ );
+
+ std::string *data = static_cast<std::string*>(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<TCHAR*>(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;
+}