# HG changeset patch # User Mark Doliner # Date 1094100436 0 # Node ID bb0c04ebcdef5180bcfa90a333527ca630dd4ec3 # Parent 31fddde685dd4d36ff0fdcc55c88364698d8f311 [gaim-migrate @ 10827] Someone should make this work so I don't have to #if 0 it out. committer: Tailor Script diff -r 31fddde685dd -r bb0c04ebcdef src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Thu Sep 02 04:33:48 2004 +0000 +++ b/src/protocols/oscar/oscar.c Thu Sep 02 04:47:16 2004 +0000 @@ -296,6 +296,8 @@ static void oscar_set_info(GaimConnection *gc, const char *text); static void oscar_set_away(GaimConnection *gc, const char *state, const char *message); +static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data); + static void oscar_free_name_data(struct name_data *data) { g_free(data->name); g_free(data->nick); @@ -1717,6 +1719,9 @@ od->sess = sess; sess->aux_data = gc; + /* Connect to core Gaim signals */ + gaim_prefs_connect_callback("/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc); + conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); if (conn == NULL) { gaim_debug_error("oscar", @@ -7283,6 +7288,42 @@ oscar_direct_im_destroy(od, dim); } +static void +recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data) +{ + GaimConnection *gc = data; + OscarData *od = gc->proto_data; + aim_session_t *sess = od->sess; + fu32_t presence; + + presence = aim_ssi_getpresence(sess->ssi.local); + + if (value) { + presence |= 0x00400000; + aim_ssi_setpresence(sess, presence); + } else { + presence &= 0xFFBFFFFF; + aim_ssi_setpresence(sess, presence); + } +} + +static GaimPluginPrefFrame * +get_plugin_pref_frame(GaimPlugin *plugin) { + GaimPluginPrefFrame *frame; + GaimPluginPref *ppref; + + frame = gaim_plugin_pref_frame_new(); + + ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group")); + gaim_plugin_pref_frame_add(frame, ppref); + + /* XXX - Why doesn't the following show up? */ + ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle")); + gaim_plugin_pref_frame_add(frame, ppref); + + return frame; +} + static GaimPluginProtocolInfo prpl_info = { GAIM_PRPL_API_VERSION, @@ -7352,6 +7393,10 @@ oscar_send_file /* send_file */ }; +static GaimPluginUiInfo prefs_info = { + get_plugin_pref_frame +}; + static GaimPluginInfo info = { GAIM_PLUGIN_API_VERSION, /**< api_version */ @@ -7377,7 +7422,7 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ - NULL, + &prefs_info, /**< prefs_info */ oscar_actions }; @@ -7396,6 +7441,9 @@ prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); my_protocol = plugin; + + gaim_prefs_add_none("/plugins/prpl/oscar"); + gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE); } GAIM_INIT_PLUGIN(oscar, init_plugin, info);