Пример #1
0
void
message_send(const char * const msg, const char * const recipient)
{
    const char * jid = NULL;

    if (roster_barejid_from_name(recipient) != NULL) {
        jid = roster_barejid_from_name(recipient);
    } else {
        jid = recipient;
    }

    if (prefs_get_boolean(PREF_STATES)) {
        if (!chat_session_exists(jid)) {
            chat_session_start(jid, TRUE);
        }
    }

    xmpp_stanza_t *message;
    xmpp_conn_t * const conn = connection_get_conn();
    xmpp_ctx_t * const ctx = connection_get_ctx();
    if (prefs_get_boolean(PREF_STATES) && chat_session_get_recipient_supports(jid)) {
        chat_session_set_active(jid);
        message = stanza_create_message(ctx, jid, STANZA_TYPE_CHAT,
            msg, STANZA_NAME_ACTIVE, NULL);
    } else {
        message = stanza_create_message(ctx, jid, STANZA_TYPE_CHAT,
            msg, NULL, NULL);
    }

    xmpp_send(conn, message);
    xmpp_stanza_release(message);
}
Пример #2
0
static void
_title_bar_draw(void)
{
    werase(win);

    // show title
    wmove(win, 0, 0);
    int i;
    for (i = 0; i < 45; i++)
        waddch(win, ' ');
    mvwprintw(win, 0, 0, " %s", current_title);


#ifdef HAVE_LIBOTR
    // show privacy
    if (current_recipient != NULL) {
        char *recipient_jid = roster_barejid_from_name(current_recipient);
        ProfWin *current = wins_get_by_recipient(recipient_jid);
        if (current != NULL) {
            if (current->type == WIN_CHAT) {
                if (!current->is_otr) {
                    if (prefs_get_boolean(PREF_OTR_WARN)) {
                        wprintw(win, " ");
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "[");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                        wattron(win, COLOUR_TITLE_UNENCRYPTED);
                        wprintw(win, "unencrypted");
                        wattroff(win, COLOUR_TITLE_UNENCRYPTED);
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "]");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                    }
                } else {
                    wprintw(win, " ");
                    wattron(win, COLOUR_TITLE_BRACKET);
                    wprintw(win, "[");
                    wattroff(win, COLOUR_TITLE_BRACKET);
                    wattron(win, COLOUR_TITLE_ENCRYPTED);
                    wprintw(win, "OTR");
                    wattroff(win, COLOUR_TITLE_ENCRYPTED);
                    wattron(win, COLOUR_TITLE_BRACKET);
                    wprintw(win, "]");
                    wattroff(win, COLOUR_TITLE_BRACKET);
                    if (current->is_trusted) {
                        wprintw(win, " ");
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "[");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                        wattron(win, COLOUR_TITLE_TRUSTED);
                        wprintw(win, "trusted");
                        wattroff(win, COLOUR_TITLE_TRUSTED);
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "]");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                    } else {
                        wprintw(win, " ");
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "[");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                        wattron(win, COLOUR_TITLE_UNTRUSTED);
                        wprintw(win, "untrusted");
                        wattroff(win, COLOUR_TITLE_UNTRUSTED);
                        wattron(win, COLOUR_TITLE_BRACKET);
                        wprintw(win, "]");
                        wattroff(win, COLOUR_TITLE_BRACKET);
                    }
                }
            }
        }
    }
#endif

    // show contact typing
    if (typing) {
        wprintw(win, " (typing...)");
    }

    // show presence
    int cols = getmaxx(stdscr);

    wattron(win, COLOUR_TITLE_BRACKET);
    mvwaddch(win, 0, cols - 14, '[');
    wattroff(win, COLOUR_TITLE_BRACKET);

    switch (current_presence)
    {
        case CONTACT_ONLINE:
            mvwprintw(win, 0, cols - 13, " ...online ");
            break;
        case CONTACT_AWAY:
            mvwprintw(win, 0, cols - 13, " .....away ");
            break;
        case CONTACT_DND:
            mvwprintw(win, 0, cols - 13, " ......dnd ");
            break;
        case CONTACT_CHAT:
            mvwprintw(win, 0, cols - 13, " .....chat ");
            break;
        case CONTACT_XA:
            mvwprintw(win, 0, cols - 13, " .......xa ");
            break;
        case CONTACT_OFFLINE:
            mvwprintw(win, 0, cols - 13, " ..offline ");
            break;
    }

    wattron(win, COLOUR_TITLE_BRACKET);
    mvwaddch(win, 0, cols - 2, ']');
    wattroff(win, COLOUR_TITLE_BRACKET);

    wnoutrefresh(win);
    inp_put_back();
}