Пример #1
0
int			parse_room(t_env *env, t_parser *p, char **split)
{
	t_room_list	*lst;
	t_room		*room;

	if (!is_nbr(split[1]) || !is_nbr(split[2]) || p->link_part)
		return (0);
	lst = env->rooms;
	while (lst)
	{
		if (!ft_strcmp(lst->room->name, split[0]))
			return (0);
		lst = lst->next;
	}
	if (!(lst = malloc(sizeof(*lst))))
		error_quit("Failed to malloc room list");
	room = room_create();
	room->name = split[0];
	lst->room = room;
	lst->next = env->rooms;
	env->rooms = lst;
	if (!check_start_end(env, room, p))
		return (0);
	return (1);
}
Пример #2
0
/*------------------------------------------------------------------------
 * Received a Subscription Request to a MultiMX room.
 *
 *  @param session		The MXit session object
 *  @param contact		The invited MultiMX room's contact information
 *  @param creator		The nickname of the room's creator / invitor
 */
void multimx_invite(struct MXitSession* session, struct contact* contact, const char* creator)
{
	GHashTable *components;
	struct multimx* multimx = NULL;

	purple_debug_info(MXIT_PLUGIN_ID, "Groupchat invite to '%s' by '%s'\n", contact->alias, creator);

	/* Create a new room */
	multimx = room_create(session, contact->username, contact->alias, STATE_INVITED);

	components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
	g_hash_table_insert(components, g_strdup("room"), g_strdup(contact->alias));

	/* Call libpurple - will trigger either 'mxit_chat_join' or 'mxit_chat_reject' */
	serv_got_chat_invite(session->con, contact->alias, creator, NULL, components);
}
Пример #3
0
void
house::_connect_signals() {
    connect(_action_quit,   SIGNAL(triggered()), app(), SLOT(quit()));
    connect(_msg_field,     SIGNAL(returnPressed()), this, SLOT(send_message()));
    connect(_action_cancel, SIGNAL(triggered()), this, SLOT(interrupt()));

    connect(_action_chatting,     SIGNAL(triggered()), this, SLOT(change_user_status_to_chatting()));
    connect(_action_away,         SIGNAL(triggered()), this, SLOT(change_user_status_to_away()));
    connect(_action_playing,      SIGNAL(triggered()), this, SLOT(change_user_status_to_playing()));
    connect(_action_donotdisturb, SIGNAL(triggered()), this, SLOT(change_user_status_to_dont_disturb()));

    connect(_action_create_room, SIGNAL(triggered()), this, SLOT(room_create()));
    connect(_action_join_room,   SIGNAL(triggered()), this, SLOT(room_join_selected()));
    connect(_action_refresh,     SIGNAL(triggered()), this, SLOT(refresh()));

    connect(_action_settings,  SIGNAL(triggered()), this, SLOT(open_settings()));

    _menu_comp->addAction(_action_rvr_1vs1);
    _menu_comp->addAction(_action_rvr_player_profiles);

    connect(_action_about_rvh, SIGNAL(triggered()), this, SLOT(open_about()));
    connect(_rooms_view,       SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(room_join_selected(QTreeWidgetItem *, int)));
    connect(_users_view,       SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(open_private_room(QTreeWidgetItem *, int)));

    QSignalMapper *openUrlSignalMapper = new QSignalMapper(this);
    openUrlSignalMapper->setMapping(_action_rvr_wwwsite,         conf()->get_value("www/rvr_home").c_str());
    openUrlSignalMapper->setMapping(_action_rvr_1vs1,            conf()->get_value("www/rvr_1vs1").c_str());
    openUrlSignalMapper->setMapping(_action_rvr_player_profiles, conf()->get_value("www/rvr_players").c_str());

    openUrlSignalMapper->setMapping(_action_routerfw_help,   conf()->get_value("www/help_router").c_str());
    openUrlSignalMapper->setMapping(_action_connection_help, conf()->get_value("www/help_connection").c_str());
    openUrlSignalMapper->setMapping(_action_rvh_faq,         conf()->get_value("www/help_faq").c_str());

    connect(_action_rvr_wwwsite,         SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));
    connect(_action_rvr_1vs1,            SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));
    connect(_action_rvr_player_profiles, SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));

    connect(_action_routerfw_help,   SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));
    connect(_action_connection_help, SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));
    connect(_action_rvh_faq,         SIGNAL(triggered()), openUrlSignalMapper, SLOT(map()));

    connect(openUrlSignalMapper, SIGNAL(mapped(QString)), this, SLOT(open_url(QString)));

}
Пример #4
0
/*------------------------------------------------------------------------
 * MultiMX room has been added to the roster.
 *
 *  @param session		The MXit session object
 *  @param contact		The MultiMX room's contact information
 */
void multimx_created(struct MXitSession* session, struct contact* contact)
{
	PurpleConnection *gc = session->con;
	struct multimx* multimx = NULL;

	purple_debug_info(MXIT_PLUGIN_ID, "Groupchat '%s' created as '%s'\n", contact->alias, contact->username);

	/* Find matching MultiMX group */
	multimx = find_room_by_username(session, contact->username);
	if (multimx == NULL) {
		multimx = room_create(session, contact->username, contact->alias, TRUE);
		}
	else if (multimx->state == STATE_INVITED) {
		/* After successfully accepting an invitation */
		multimx->state = STATE_JOINED;
	}

	/* Call libpurple - will trigger 'mxit_chat_join' */
	serv_got_joined_chat(gc, multimx->chatid, multimx->roomname);

	/* Send ".list" command to GroupChat server to retrieve current member-list */
	mxit_send_message(session, multimx->roomid, ".list", FALSE, FALSE);
}
Пример #5
0
void process_client()
{
    char *argv[MAX_ARGV];
    char buf[BUF_SIZE];
    int argc = 0;

    set_signal();
    print_greeting();
    prompt();

    while (1)
    {
        if (!fgets(buf, BUF_SIZE, stdin))
            break;
        strtok(buf, "\r\n");             // Skip everything after "\r" or "\n"

        parse_argv(buf, argv, &argc);    // It it sommand, so let's parse it
        char *cmd = argv[0];             // At least 1 token exists

        if (buf[0] != '\\')              // If not command, then client wants to say something
        {
            say(buf);
        }
        else if (!strcmp(cmd, "\\quit"))
        {
            break;
        }
        else if (!strcmp(cmd, "\\help"))
        {
            print_help();
        }
        else if (!strcmp(cmd, "\\list") && argc == 1)
        {
            list();
        }
        else if (!strcmp(cmd, "\\register") && argc == 3)
        {
            user_create(argv[1], argv[2]);            // args: user, pass
        }
        else if (!strcmp(cmd, "\\login") && argc == 3)
        {
            user_login(argv[1], argv[2]);             // args: user, pass
        }
        else if (!strcmp(cmd, "\\create") && argc >= 2 && argc <= 3)
        {
            room_create(argv[1], argv[2]);            // args: name, [pass]
        }
        else if (!strcmp(cmd, "\\join") && argc >= 2 && argc <= 3)
        {
            room_join(argv[1], argv[2]);              // args: name, [pass]
        }
        else if (!strcmp(cmd, "\\leave"))
        {
            room_leave();
        }
        else
        {
            WriteLn("Unknown command or wrong number of arguments (type '\\help' for commands list)");
        }
        WriteLn("");
        prompt();
    }
}