int servlist_cycle (server *serv) { ircnet *net; int max, del; net = serv->network; if (net) { max = g_slist_length (net->servlist); if (max > 0) { /* try the next server, if that option is on */ if (net->flags & FLAG_CYCLE) { net->selected++; if (net->selected >= max) net->selected = 0; } del = prefs.hex_net_reconnect_delay * 1000; if (del < 1000) del = 500; /* so it doesn't block the gui */ if (del) serv->recondelay_tag = fe_timeout_add (del, servlist_cycle_cb, serv); else servlist_connect (serv->server_session, net, TRUE); return TRUE; } } return FALSE; }
bool servlist_cycle (server *serv) { auto net = serv->network; if (!net) { return false; } int max = g_slist_length(net->servlist); if (max <= 0) { return false; } /* try the next server, if that option is on */ if (net->flags & FLAG_CYCLE) { net->selected++; if (net->selected >= max) net->selected = 0; } int del = prefs.hex_net_reconnect_delay * 1000; if (del < 1000) del = 500; /* so it doesn't block the gui */ if (del) serv->recondelay_tag = fe_timeout_add(del, (GSourceFunc)servlist_cycle_cb, serv); else servlist_connect(serv->server_session, *net, true); return true; }
static void dialog_response (ConnectDialog *dialog, gint response, gpointer data) { if (response != GTK_RESPONSE_OK) { gtk_widget_destroy (GTK_WIDGET (dialog)); return; } GtkTreeModel *model; GtkTreeIter iter; GtkTreeSelection *select = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->server_list)); if (gtk_tree_selection_get_selected (select, &model, &iter)) { session *s = NULL; ircnet *net; // If the currently selected server is not connected, use it // for the new session. if (gui.current_session && (gui.current_session->server == NULL || gui.current_session->server->connected == FALSE)) { s = gui.current_session; } // Make sure that this network isn't already connected. gtk_tree_model_get (model, &iter, 1, &net, -1); gboolean found = FALSE; for (GSList *i = sess_list; i; i = g_slist_next (i)) { session *sess = (session *)(i->data); if (sess->type == SESS_SERVER && sess->server != NULL && sess->server->network == net && (sess->server->connected || sess->server->connecting)) { found = TRUE; break; } } gtk_widget_destroy (GTK_WIDGET (dialog)); if(net->servlist == NULL) { GtkWidget *warning_dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, _("This network doesn't have a server defined.")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (warning_dialog), _("Please add at least one server to the %s network."), net->name); gtk_dialog_run (GTK_DIALOG (warning_dialog)); gtk_widget_destroy (warning_dialog); } else if (!found) { servlist_connect (s, net, TRUE); } } }
static gint servlist_cycle_cb(server *serv) { if (serv->network) { PrintTextf(serv->server_session, _("Cycling to next server in %s...\n"), ((ircnet *)serv->network)->name); servlist_connect(serv->server_session, serv->network, TRUE); } return 0; }
static gint servlist_cycle_cb (server *serv) { if (serv->network) { PrintTextf (serv->server_session, _("Cycling to next server in %s...\n"), serv->network->name.c_str()); servlist_connect(serv->server_session, *serv->network, true); } return 0; }
bool servlist_connect_by_netname (session *sess, char *network, bool join) { for(auto & net : glib_helper::glist_iterable<ircnet>(network_list)) { if (g_ascii_strcasecmp (net.name.c_str(), network) == 0) { servlist_connect (sess, net, join); return true; } } return false; }
bool servlist_auto_connect (session *sess) { bool ret = false; for (auto & net : glib_helper::glist_iterable<ircnet>(network_list)) { if (net.flags & FLAG_AUTO_CONNECT) { servlist_connect (sess, net, true); ret = true; } } return ret; }
int servlist_connect_by_netname(session *sess, char *network, gboolean join) { ircnet *net; GSList *list = network_list; while (list) { net = list->data; if (strcasecmp(net->name, network) == 0) { servlist_connect(sess, net, join); return 1; } list = list->next; } return 0; }
int servlist_auto_connect(session *sess) { GSList *list = network_list; ircnet *net; int ret = 0; while (list) { net = list->data; if (net->flags & FLAG_AUTO_CONNECT) { servlist_connect(sess, net, TRUE); ret = 1; } list = list->next; } return ret; }
static void servlist_connect_cb (GtkWidget *button, gpointer userdata) { if (!selected_net) return; if (servlist_savegui () != 0) { fe_message (_("User name and Real name cannot be left blank."), FE_MSG_ERROR); return; } if (!is_session (servlist_sess)) servlist_sess = NULL; else if (servlist_sess->server->connected) servlist_sess = NULL; servlist_connect (servlist_sess, selected_net, TRUE); mg_close_gen(NULL, serverlist_win); }