comparison mcabber/mcabber/commands.c @ 1980:3bcc57751283

Add 'muc_bookmark_autoupdate' (Hermitifier)
author Mikael Berthe <mikael@lilotux.net>
date Sat, 26 Mar 2011 15:08:57 +0100
parents 6febc7d1f760
children 0870005f7efc
comparison
equal deleted inserted replaced
1979:6febc7d1f760 1980:3bcc57751283
92 static void do_color(char *arg); 92 static void do_color(char *arg);
93 static void do_otr(char *arg); 93 static void do_otr(char *arg);
94 static void do_otrpolicy(char *arg); 94 static void do_otrpolicy(char *arg);
95 static void do_echo(char *arg); 95 static void do_echo(char *arg);
96 static void do_module(char *arg); 96 static void do_module(char *arg);
97
98 static void room_bookmark(gpointer bud, char *arg);
97 99
98 // Global variable for the commands list 100 // Global variable for the commands list
99 static GSList *Commands; 101 static GSList *Commands;
100 102
101 #ifdef MODULES_ENABLE 103 #ifdef MODULES_ENABLE
1975 } 1977 }
1976 1978
1977 static void move_group_member(gpointer bud, void *groupnamedata) 1979 static void move_group_member(gpointer bud, void *groupnamedata)
1978 { 1980 {
1979 const char *bjid, *name, *groupname; 1981 const char *bjid, *name, *groupname;
1980 guint on_srv; 1982 guint type, on_srv;
1981 1983
1982 groupname = (char *)groupnamedata; 1984 groupname = (char *)groupnamedata;
1983 1985
1984 bjid = buddy_getjid(bud); 1986 bjid = buddy_getjid(bud);
1985 name = buddy_getname(bud); 1987 name = buddy_getname(bud);
1988 type = buddy_gettype(bud);
1986 on_srv = buddy_getonserverflag(bud); 1989 on_srv = buddy_getonserverflag(bud);
1987 1990
1988 if (on_srv) 1991 if (on_srv)
1989 xmpp_updatebuddy(bjid, name, *groupname ? groupname : NULL); 1992 xmpp_updatebuddy(bjid, name, *groupname ? groupname : NULL);
1990 else 1993 else {
1991 buddy_setgroup(bud, (char *)groupname); 1994 buddy_setgroup(bud, (char *)groupname);
1995 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
1996 settings_opt_get_int("muc_bookmark_autoupdate"))
1997 room_bookmark(bud, NULL);
1998 }
1992 } 1999 }
1993 2000
1994 static void do_rename(char *arg) 2001 static void do_rename(char *arg)
1995 { 2002 {
1996 gpointer bud; 2003 gpointer bud;
2055 */ 2062 */
2056 xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8), group); 2063 xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8), group);
2057 } else { 2064 } else {
2058 // This is a local item, we rename it without adding to roster. 2065 // This is a local item, we rename it without adding to roster.
2059 buddy_setname(bud, (del_name ? (char*)bjid : name_utf8)); 2066 buddy_setname(bud, (del_name ? (char*)bjid : name_utf8));
2067 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
2068 settings_opt_get_int("muc_bookmark_autoupdate"))
2069 room_bookmark(bud, NULL);
2060 } 2070 }
2061 } 2071 }
2062 2072
2063 g_free(name_utf8); 2073 g_free(name_utf8);
2064 g_free(newname); 2074 g_free(newname);
2121 if (msgflag) 2131 if (msgflag)
2122 roster_msg_setflag(bjid, FALSE, FALSE); 2132 roster_msg_setflag(bjid, FALSE, FALSE);
2123 buddy_setgroup(bud, group_utf8); 2133 buddy_setgroup(bud, group_utf8);
2124 if (msgflag) 2134 if (msgflag)
2125 roster_msg_setflag(bjid, FALSE, TRUE); 2135 roster_msg_setflag(bjid, FALSE, TRUE);
2136 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
2137 settings_opt_get_int("muc_bookmark_autoupdate"))
2138 room_bookmark(bud, NULL);
2126 } 2139 }
2127 } 2140 }
2128 2141
2129 g_free(group_utf8); 2142 g_free(group_utf8);
2130 g_free(newgroupname); 2143 g_free(newgroupname);
2798 { 2811 {
2799 char **paramlst; 2812 char **paramlst;
2800 char *param, *value; 2813 char *param, *value;
2801 enum { opt_none = 0, opt_printstatus, 2814 enum { opt_none = 0, opt_printstatus,
2802 opt_autowhois, opt_flagjoins } option = 0; 2815 opt_autowhois, opt_flagjoins } option = 0;
2816 guint changed = 0;
2803 2817
2804 paramlst = split_arg(arg, 2, 1); // param, value 2818 paramlst = split_arg(arg, 2, 1); // param, value
2805 param = *paramlst; 2819 param = *paramlst;
2806 value = *(paramlst+1); 2820 value = *(paramlst+1);
2807 if (!param) { 2821 if (!param) {
2847 else { 2861 else {
2848 eval = status_default; 2862 eval = status_default;
2849 if (strcasecmp(value, "default") != 0) 2863 if (strcasecmp(value, "default") != 0)
2850 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default..."); 2864 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
2851 } 2865 }
2852 buddy_setprintstatus(bud, eval); 2866 if (eval != buddy_getprintstatus(bud)) {
2867 buddy_setprintstatus(bud, eval);
2868 changed = 1;
2869 }
2853 } else if (option == opt_autowhois) { 2870 } else if (option == opt_autowhois) {
2854 enum room_autowhois eval; 2871 enum room_autowhois eval;
2855 if (!strcasecmp(value, "on")) 2872 if (!strcasecmp(value, "on"))
2856 eval = autowhois_on; 2873 eval = autowhois_on;
2857 else if (!strcasecmp(value, "off")) 2874 else if (!strcasecmp(value, "off"))
2859 else { 2876 else {
2860 eval = autowhois_default; 2877 eval = autowhois_default;
2861 if (strcasecmp(value, "default") != 0) 2878 if (strcasecmp(value, "default") != 0)
2862 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default..."); 2879 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
2863 } 2880 }
2864 buddy_setautowhois(bud, eval); 2881 if (eval != buddy_getautowhois(bud)) {
2882 buddy_setautowhois(bud, eval);
2883 changed = 1;
2884 }
2865 } else if (option == opt_flagjoins) { 2885 } else if (option == opt_flagjoins) {
2866 enum room_flagjoins eval; 2886 enum room_flagjoins eval;
2867 if (!strcasecmp(value, "none")) 2887 if (!strcasecmp(value, "none"))
2868 eval = flagjoins_none; 2888 eval = flagjoins_none;
2869 else if (!strcasecmp(value, "joins")) 2889 else if (!strcasecmp(value, "joins"))
2873 else { 2893 else {
2874 eval = flagjoins_default; 2894 eval = flagjoins_default;
2875 if (strcasecmp(value, "default") != 0) 2895 if (strcasecmp(value, "default") != 0)
2876 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default..."); 2896 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
2877 } 2897 }
2878 buddy_setflagjoins(bud, eval); 2898 if (eval != buddy_getflagjoins(bud)) {
2879 } 2899 buddy_setflagjoins(bud, eval);
2900 changed = 1;
2901 }
2902 }
2903 if (changed &&
2904 xmpp_is_bookmarked(buddy_getjid(bud)) &&
2905 settings_opt_get_int("muc_bookmark_autoupdate"))
2906 room_bookmark(bud, NULL);
2880 2907
2881 free_arg_lst(paramlst); 2908 free_arg_lst(paramlst);
2882 } 2909 }
2883 2910
2884 // cmd_room_whois(..) 2911 // cmd_room_whois(..)