static void sig_statusbar_activity_hilight(WINDOW_REC *window, gpointer oldlevel) { GList *tmp; int inspos; g_return_if_fail(window != NULL); if (settings_get_bool("actlist_moves")) { /* Move the window to the first in the activity list */ if (g_list_find(activity_list, window) != NULL) activity_list = g_list_remove(activity_list, window); if (window->data_level != 0) activity_list = g_list_prepend(activity_list, window); statusbar_items_redraw("act"); return; } if (g_list_find(activity_list, window) != NULL) { /* already in activity list */ if (window->data_level == 0) { /* remove from activity list */ activity_list = g_list_remove(activity_list, window); statusbar_items_redraw("act"); } else if (window->data_level != GPOINTER_TO_INT(oldlevel) || window->hilight_color != 0) { /* different level as last time (or maybe different hilight color?), just redraw it. */ statusbar_items_redraw("act"); } return; } if (window->data_level == 0) return; /* add window to activity list .. */ inspos = 0; for (tmp = activity_list; tmp != NULL; tmp = tmp->next, inspos++) { WINDOW_REC *rec = tmp->data; if (window->refnum < rec->refnum) { activity_list = g_list_insert(activity_list, window, inspos); break; } } if (tmp == NULL) activity_list = g_list_append(activity_list, window); statusbar_items_redraw("act"); }
/* * Handle the "/otr" command. */ static void cmd_otr(const char *data, void *server, WI_ITEM_REC *item) { char *cmd = NULL; QUERY_REC *query; query = QUERY(item); /* Check key generation state. */ key_gen_check(); if (*data == '\0') { IRSSI_INFO(NULL, NULL, "Alive!"); goto end; } utils_extract_command(data, &cmd); if (!cmd) { /* ENOMEM and cmd is untouched. */ goto end; } if (query && query->server && query->server->connrec) { cmd_generic(user_state_global, query->server, query->name, cmd, data); } else { cmd_generic(user_state_global, NULL, NULL, cmd, data); } statusbar_items_redraw("otr"); free(cmd); end: return; }
static void sig_statusbar_more_updated(void) { int visible; visible = g_slist_find(more_visible, WINDOW_MAIN(active_win)) != NULL; if (WINDOW_GUI(active_win)->view->more_text != visible) statusbar_items_redraw("more"); }
static void sig_statusbar_activity_window_destroyed(WINDOW_REC *window) { g_return_if_fail(window != NULL); if (g_list_find(activity_list, window) != NULL) activity_list = g_list_remove(activity_list, window); statusbar_items_redraw("act"); }
static void sig_statusbar_activity_window_destroyed(WINDOW_REC *window) { GList *node; g_return_if_fail(window != NULL); node = g_list_find(activity_list, window); if (node != NULL) activity_list = g_list_delete_link(activity_list, node); statusbar_items_redraw("act"); }
static void sig_statusbar_more_updated(void) { int visible; /* no active window, for example during /window hide */ if (active_win == NULL) return; visible = g_slist_find(more_visible, WINDOW_MAIN(active_win)) != NULL; if (WINDOW_GUI(active_win)->view->more_text != visible) statusbar_items_redraw("more"); }
static void lag_check_update(void) { SERVER_REC *server; int lag, lag_unknown; server = active_win == NULL ? NULL : active_win->active_server; lag = get_lag(server, &lag_unknown)/10; if (lag < settings_get_int("lag_min_show")) lag = 0; if (lag != last_lag || (lag > 0 && lag_unknown != last_lag_unknown)) statusbar_items_redraw("lag"); }
static void update_nick_statusbar(XMPP_SERVER_REC *server, MUC_REC *channel, gboolean redraw) { char *newnick; newnick = IS_MUC(channel) ? channel->nick : settings_get_bool("xmpp_set_nick_as_username") ? server->user : server->jid; if (strcmp(server->nick, newnick) == 0) return; g_free(server->nick); server->nick = g_strdup(newnick); if (redraw) statusbar_items_redraw("user"); }
/* * irssi init() */ void otr_init(void) { int ret; module_register(MODULE_NAME, "core"); theme_register(otr_formats); ret = create_module_dir(); if (ret < 0) { return; } gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); otr_lib_init(); user_state_global = otr_init_user_state(); if (!user_state_global) { IRSSI_MSG("Unable to allocate user global state"); return; } signal_add_first("server sendmsg", (SIGNAL_FUNC) sig_server_sendmsg); signal_add_first("message private", (SIGNAL_FUNC) sig_message_private); signal_add("query destroyed", (SIGNAL_FUNC) sig_query_destroyed); command_bind("otr", NULL, (SIGNAL_FUNC) cmd_otr); command_bind_first("quit", NULL, (SIGNAL_FUNC) cmd_quit); command_bind_irc_first("me", NULL, (SIGNAL_FUNC) cmd_me); statusbar_item_register("otr", NULL, otr_statusbar); statusbar_items_redraw("window"); perl_signal_register("otr event", signal_args_otr_event); }
static void sig_statusbar_activity_updated(void) { statusbar_items_redraw("act"); }
static void sig_statusbar_activity_hilight(WINDOW_REC *window, gpointer oldlevel) { GList *node; g_return_if_fail(window != NULL); node = g_list_find(activity_list, window); if (actlist_sort == 1) { /* Move the window to the first in the activity list */ if (node != NULL) activity_list = g_list_delete_link(activity_list, node); if (window->data_level != 0) activity_list = g_list_prepend(activity_list, window); statusbar_items_redraw("act"); return; } if (actlist_sort == 2) { if (node != NULL) { if (window->data_level == GPOINTER_TO_INT(oldlevel)) { if (window->hilight_color != 0) statusbar_items_redraw("act"); return; } activity_list = g_list_delete_link(activity_list, node); } if (window->data_level != 0) activity_list = g_list_insert_sorted(activity_list, window, (GCompareFunc) window_level_cmp); statusbar_items_redraw("act"); return; } if (actlist_sort == 3) { if (node != NULL) activity_list = g_list_delete_link(activity_list, node); if (window->data_level != 0) activity_list = g_list_insert_sorted(activity_list, window, (GCompareFunc) window_level_recent_cmp); statusbar_items_redraw("act"); return; } if (node != NULL) { /* already in activity list */ if (window->data_level == 0) { /* remove from activity list */ activity_list = g_list_delete_link(activity_list, node); statusbar_items_redraw("act"); } else if (window->data_level != GPOINTER_TO_INT(oldlevel) || window->hilight_color != 0) { /* different level as last time (or maybe different hilight color?), just redraw it. */ statusbar_items_redraw("act"); } return; } if (window->data_level == 0) return; /* add window to activity list .. */ activity_list = g_list_insert_sorted(activity_list, window, (GCompareFunc) window_refnum_cmp); statusbar_items_redraw("act"); }
/* * Change status bar text for a given nickname. */ void otr_status_change(SERVER_REC *irssi, const char *nick, enum otr_status_event event) { statusbar_items_redraw("otr"); signal_emit("otr event", 3, irssi, nick, statusbar_txt[event]); }