diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-10 15:47:41 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-10 15:47:41 +0000 |
commit | 81cb552e5a96b888c48502feadcc514b5d8069d3 (patch) | |
tree | df9ba8521ccfbe195cc3ed020fdc9556a41de8fc | |
parent | ffa0fa4f142eb6ee5f919a96b10f36363c511b16 (diff) |
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
-rw-r--r-- | MySpace/MySpace.cpp | 6 | ||||
-rw-r--r-- | MySpace/common.h | 4 | ||||
-rw-r--r-- | MySpace/proto.cpp | 4 | ||||
-rw-r--r-- | MySpace/server_con.cpp | 27 | ||||
-rw-r--r-- | 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
|