Mercurial > ~mikael > mcabber > hg
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(..) |