void purple_prefs_init(void) { void *handle = purple_prefs_get_handle(); prefs_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); purple_prefs_connect_callback(handle, "/", prefs_save_cb, NULL); purple_prefs_add_none("/purple"); purple_prefs_add_none("/plugins"); purple_prefs_add_none("/plugins/core"); purple_prefs_add_none("/plugins/lopl"); purple_prefs_add_none("/plugins/prpl"); /* Away */ purple_prefs_add_none("/purple/away"); purple_prefs_add_string("/purple/away/idle_reporting", "system"); purple_prefs_add_bool("/purple/away/away_when_idle", TRUE); purple_prefs_add_int("/purple/away/mins_before_away", 5); /* Away -> Auto-Reply */ if (!purple_prefs_exists("/purple/away/auto_response/enabled") || !purple_prefs_exists("/purple/away/auto_response/idle_only")) { purple_prefs_add_string("/purple/away/auto_reply", "awayidle"); } else { if (!purple_prefs_get_bool("/purple/away/auto_response/enabled")) { purple_prefs_add_string("/purple/away/auto_reply", "never"); } else { if (purple_prefs_get_bool("/purple/away/auto_response/idle_only")) { purple_prefs_add_string("/purple/away/auto_reply", "awayidle"); } else { purple_prefs_add_string("/purple/away/auto_reply", "away"); } } } /* Buddies */ purple_prefs_add_none("/purple/buddies"); /* Contact Priority Settings */ purple_prefs_add_none("/purple/contact"); purple_prefs_add_bool("/purple/contact/last_match", FALSE); purple_prefs_remove("/purple/contact/offline_score"); purple_prefs_remove("/purple/contact/away_score"); purple_prefs_remove("/purple/contact/idle_score"); purple_prefs_load(); purple_prefs_update_old(); }
static gboolean plugin_load (PurplePlugin * plugin) { trace("plugin loading"); recent_contacts_plugin = plugin; /* assign this here so we have a valid handle later */ g_size = purple_prefs_get_int(PREF_SIZE); void *handle = purple_prefs_get_handle(); purple_prefs_connect_callback(handle, PREF_SIZE, pref_size_on_change, NULL); void *conv_handle = purple_conversations_get_handle(); purple_signal_connect(conv_handle, "conversation-created", plugin, PURPLE_CALLBACK(rc_at_conversation_event), NULL); purple_signal_connect(conv_handle, "deleting-conversation", plugin, PURPLE_CALLBACK(rc_at_conversation_event), NULL); return TRUE; }
void purple_prefs_uninit() { if (save_timer != 0) { purple_timeout_remove(save_timer); save_timer = 0; sync_prefs(); } purple_prefs_disconnect_by_handle(purple_prefs_get_handle()); prefs_loaded = FALSE; purple_prefs_destroy(); g_hash_table_destroy(prefs_hash); prefs_hash = NULL; }