From 81cb552e5a96b888c48502feadcc514b5d8069d3 Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 10 Jul 2007 15:47:41 +0000 Subject: use undocumented 'buddy message 200' (which official client ignores) for miranda & myspace plugin version info implement adding a 'sent message' so you can see when you send a zap git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@270 4f64403b-2f21-0410-a795-97e2b3489a10 --- MySpace/MySpace.cpp | 6 ++++++ MySpace/common.h | 4 ++++ MySpace/proto.cpp | 4 +--- MySpace/server_con.cpp | 27 +++++++++++++++++++++++++-- MySpace/version.h | 2 +- 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/MySpace/MySpace.cpp b/MySpace/MySpace.cpp index 921d616..ec43337 100644 --- a/MySpace/MySpace.cpp +++ b/MySpace/MySpace.cpp @@ -22,6 +22,8 @@ char MODULE[256]; MM_INTERFACE mmi; +char mir_ver[256]; + PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), __PLUGIN_NAME, @@ -133,6 +135,10 @@ extern "C" __declspec (dllexport) int Load(PLUGINLINK *link) { CharUpperA(MODULE); } + char temp[256]; + CallService(MS_SYSTEM_GETVERSIONTEXT, 256, (LPARAM)temp); + mir_snprintf(mir_ver, 256, "Miranda IM %s (MySpace %d.%d.%d.%d)", temp, __FILEVERSION_STRING); + if(ServiceExists(MS_DB_SETSETTINGRESIDENT)) { // 0.6+ char buff[256]; mir_snprintf(buff, 256, "%s/%s", MODULE, "Status"); diff --git a/MySpace/common.h b/MySpace/common.h index e7addcb..fdc29be 100644 --- a/MySpace/common.h +++ b/MySpace/common.h @@ -83,4 +83,8 @@ extern int code_page; void SetAllOffline(); +extern char mir_ver[]; + +#define EVENTTYPE_ZAP EVENTTYPE_MESSAGE //25368 is another special number for status change events that SRMM's will display (thx tweety) + #endif diff --git a/MySpace/proto.cpp b/MySpace/proto.cpp index 9dc0815..8dcd810 100644 --- a/MySpace/proto.cpp +++ b/MySpace/proto.cpp @@ -166,10 +166,8 @@ int ProtoRecvMessage(WPARAM wParam, LPARAM lParam) { dbei.flags = (pre->flags & PREF_CREATEREAD) ? DBEF_READ : 0; dbei.flags |= (pre->flags & PREF_RTL) ? DBEF_RTL : 0; dbei.flags |= (pre->flags & PREF_UTF) ? DBEF_UTF : 0; - dbei.eventType = EVENTTYPE_MESSAGE; + dbei.eventType = pre->lParam; dbei.cbBlob = strlen(pre->szMessage) + 1; - if ( pre->flags & PREF_UNICODE ) - dbei.cbBlob *= ( sizeof( wchar_t )+1 ); dbei.pBlob = (PBYTE)pre->szMessage; CallService(MS_DB_EVENT_ADD, (WPARAM)ccs->hContact, (LPARAM)&dbei); diff --git a/MySpace/server_con.cpp b/MySpace/server_con.cpp index 71ebe09..c79ecd3 100644 --- a/MySpace/server_con.cpp +++ b/MySpace/server_con.cpp @@ -265,7 +265,7 @@ void try_login(NetMessage &msg, HANDLE connection) { } } -void ParseStatusMessage(HANDLE hContact, PipedStringList &l) { +int ParseStatusMessage(HANDLE hContact, PipedStringList &l) { int stat = stat_myspace_to_mir(l.get_int(1)); if(stat == ID_STATUS_IDLE) { DBWriteContactSettingDword(hContact, MODULE, "IdleTS", (DWORD)time(0)); @@ -276,6 +276,7 @@ void ParseStatusMessage(HANDLE hContact, PipedStringList &l) { char smsg[512]; if(l.get_string(3, smsg, 512)) DBWriteContactSettingStringUtf(hContact, MODULE, "StatusMsg", smsg); + return stat; } void __cdecl CheckMailThreadFunc(void*) { @@ -458,6 +459,17 @@ void __cdecl ServerThreadFunc(void*) { // start mail checking thread mir_forkthread(CheckMailThreadFunc, 0); + } else if(msg.get_int("bm") == 200) { // action message + int uid = msg.get_int("f"); + if(uid) { + HANDLE hContact = FindContact(uid); + if(hContact) { + char cmv[256]; + if(msg.get_string("msg", cmv, 256)) { + DBWriteContactSettingStringUtf(hContact, MODULE, "MirVer", cmv); + } + } + } } else if(msg.get_int("bm") == 100) { // status message int uid = msg.get_int("f"); if(uid) { @@ -467,7 +479,16 @@ void __cdecl ServerThreadFunc(void*) { LookupUID(uid); } PipedStringList l = msg.get_list("msg"); - ParseStatusMessage(hContact, l); + if(ParseStatusMessage(hContact, l) == ID_STATUS_ONLINE && status != ID_STATUS_INVISIBLE) { + ClientNetMessage msg; + msg.add_int("bm", 200); + msg.add_int("sesskey", sesskey); + msg.add_int("t", DBGetContactSettingDword(hContact, MODULE, "UID", 0)); + msg.add_int("f", my_uid); + msg.add_int("cv", CLIENT_VER); + msg.add_string("msg", mir_ver); + SendMessage(msg); + } } } else if(msg.get_int("bm") == 121) { // action message int uid = msg.get_int("f"); @@ -495,6 +516,7 @@ void __cdecl ServerThreadFunc(void*) { pre.flags = PREF_UTF; pre.szMessage = rmsg; pre.timestamp = (DWORD)time(0); + pre.lParam = EVENTTYPE_ZAP; CCSDATA css = {0}; css.hContact = hContact; @@ -528,6 +550,7 @@ void __cdecl ServerThreadFunc(void*) { pre.flags = PREF_UTF; pre.szMessage = text; pre.timestamp = (DWORD)time(0); + pre.lParam = EVENTTYPE_MESSAGE; CCSDATA css = {0}; css.hContact = hContact; diff --git a/MySpace/version.h b/MySpace/version.h index 1f73ce4..daff73b 100644 --- a/MySpace/version.h +++ b/MySpace/version.h @@ -5,7 +5,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 0 #define __RELEASE_NUM 4 -#define __BUILD_NUM 1 +#define __BUILD_NUM 2 #define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM #define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM -- cgit v1.2.3