# HG changeset patch # User Mikael Berthe # Date 1162413410 -3600 # Node ID 0759f4c7da68267e1191ed214b0c70aba384f567 # Parent b37348c2aa795d8fdad5141caaa2491a01dac5b2 Add option 'disable_chatstates' diff -r b37348c2aa79 -r 0759f4c7da68 mcabber/mcabberrc.example --- a/mcabber/mcabberrc.example Wed Nov 01 17:47:30 2006 +0100 +++ b/mcabber/mcabberrc.example Wed Nov 01 21:36:50 2006 +0100 @@ -67,6 +67,11 @@ # in the roster. #set hide_offline_buddies = 0 +# Typing notifications, Chat States, Events (JEP-22/85) +# Set disable_chatstates to 1 if you don't want to use typing notifications. +# Note: changing this option once mcabber is running has no effect. +#set disable_chatstates = 0 + # History logging # You can save the messages history: set logging = 1 # You can load (read) the messages history: set load_logs = 1 diff -r b37348c2aa79 -r 0759f4c7da68 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Wed Nov 01 17:47:30 2006 +0100 +++ b/mcabber/src/jabglue.c Wed Nov 01 21:36:50 2006 +0100 @@ -461,6 +461,10 @@ } #if defined JEP0022 || defined JEP0085 + // If typing notifications are disabled, we can skip all this stuff... + if (chatstates_disabled) + goto jb_send_msg_no_chatstates; + rname = strchr(jid, JID_RESOURCE_SEPARATOR); barejid = jidtodisp(jid); sl_buddy = roster_find(barejid, jidsearch, ROSTER_TYPE_USER); @@ -523,6 +527,7 @@ } #endif +jb_send_msg_no_chatstates: xmlnode_put_attrib(x, "id", msgid); jab_send(jc, x); @@ -668,7 +673,6 @@ #ifdef JEP0085 jep85 = buddy_resource_jep85(buddy, NULL); if (jep85 && jep85->support == CHATSTATES_SUPPORT_OK) { - // FIXME: compare w/ last state sent... jb_send_jep85_chatstate(jid, chatstate); return; } @@ -676,7 +680,6 @@ #ifdef JEP0022 jep22 = buddy_resource_jep22(buddy, NULL); if (jep22 && jep22->support == CHATSTATES_SUPPORT_OK) { - // FIXME: compare w/ last state sent... jb_send_jep22_event(jid, chatstate); } #endif diff -r b37348c2aa79 -r 0759f4c7da68 mcabber/src/main.c --- a/mcabber/src/main.c Wed Nov 01 17:47:30 2006 +0100 +++ b/mcabber/src/main.c Wed Nov 01 21:36:50 2006 +0100 @@ -317,6 +317,8 @@ if (settings_opt_get_int("hide_offline_buddies") > 0) buddylist_set_hide_offline_buddies(TRUE); + chatstates_disabled = settings_opt_get_int("disable_chatstates"); + if (ret < 0) { scr_LogPrint(LPRINT_NORMAL, "No configuration file has been found."); scr_ShowBuddyWindow(); diff -r b37348c2aa79 -r 0759f4c7da68 mcabber/src/screen.c --- a/mcabber/src/screen.c Wed Nov 01 17:47:30 2006 +0100 +++ b/mcabber/src/screen.c Wed Nov 01 21:36:50 2006 +0100 @@ -98,6 +98,7 @@ static int chatstate; /* (0=active, 1=composing, 2=paused) */ static bool lock_chatstate; static time_t chatstate_timestamp; +int chatstates_disabled; #define MAX_KEYSEQ_LENGTH 8 @@ -1397,6 +1398,8 @@ static inline void set_chatstate(int state) { #if defined JEP0022 || defined JEP0085 + if (chatstates_disabled) + return; if (!chatmode) state = 0; if (state != chatstate) { diff -r b37348c2aa79 -r 0759f4c7da68 mcabber/src/screen.h --- a/mcabber/src/screen.h Wed Nov 01 17:47:30 2006 +0100 +++ b/mcabber/src/screen.h Wed Nov 01 21:36:50 2006 +0100 @@ -102,6 +102,7 @@ #if defined JEP0022 || defined JEP0085 long int scr_GetChatStatesTimeout(time_t now); #endif +int chatstates_disabled; // For commands... void scr_RosterTop(void);